JTextArea neue Zeile über Umschalt + EINGABETASTE

Habe ich einen keylistener auf meinem JTextArea Feld, aber es benimmt sich nicht wie ich erwartet hatte.

inputTextArea.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent k) {
  //If the return button is hit, only set to a new line if shift is also down.
  if(k.getKeyChar() == KeyEvent.VK_ENTER) {
   if(k.isShiftDown()) {
    inputTextArea.append(" \n");
   } else {
    //Send The Message...
    boolean cleanTextField = false;
    try {
     sendMessage(inputTextArea.getText());
     cleanTextField = true;
     msgScrollPane.setAutoscrolls(true);

     JScrollBar vbar = msgScrollPane.getVerticalScrollBar();
     if ((vbar.getValue() + vbar.getVisibleAmount()) == vbar.getMaximum()) {
      msgPane.setCaretPosition(msgDoc.getLength());
     }
    } catch (Exception ex) {
     ex.printStackTrace();
     cleanTextField = false;
    } finally {
     if(cleanTextField) {
      inputTextArea.setText("");
     }
    }
   }
  }
 }
});

Möchte ich dieses:
- Wenn die return-Taste wird geschlagen und shift down ist: füge eine neue Zeile ein.
- Wenn Sie die zurück-Taste getroffen wird und die shift-Taste ist nicht down: keine neue Linie, sondern senden.

Nun verhält es sich so:
- Wenn ich auf die return-Taste und shift down ist: keine Zeile Hinzugefügt. Nichts passiert.
- Wenn ich drücken Sie die zurück-Taste und die Umschalttaste ist nicht down: eingereicht, aber wenn ich mit der Eingabe beginnen wieder, es beginnt auf neuer Zeile.

Weiss einer wie das zu tun, was ich will?

EDIT:

Ich versuchte einige andere code, um festzustellen, ob die shift-Taste gedrückt ist:

                    if((k.getModifiersEx() == KeyEvent.SHIFT_DOWN_MASK) || 
                            (k.getModifiers() == KeyEvent.SHIFT_DOWN_MASK)) {

Diese funktioniert nicht so gut

InformationsquelleAutor dododedodonl | 2010-01-29
Schreibe einen Kommentar