tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Tim Bureck
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
311
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo zusammen,

    ich soll in einem von JDialog abgeleiteten Dialog bei der Texteingabe einige Tasten-/Tastenkombinationen für spezielle Aktionen auswerten.

    So wird derzeit bspw. die Enter-Taste überschrieben, was auch prima funktioniert :
    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    if( e.getKeyCode() == KeyEvent.VK_ENTER )
    {
        if( rbAusfuellen.isSelected() )
        {
             e.setKeyCode( KeyEvent.VK_DOWN );
            }
    }

    Jetzt sollte eine weitere spezielle Funktion für die Tastenkombi <Shift><Enter> einbauen, was ich (wie üblich) über einen Accelerator lösen wollte :
    Code java:
    1
    
    jTextAreaKQT.setAccelerator(javax.swing.KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_MASK));

    Leider musste ich zur Kenntnis nehmen, dass diese Methode für JTextArea nicht definiert ist ....

    Habe ich hier irgendeine andere Möglichkeit
    IMHO bringt es ja nichts, wenn ich die KeyEvents für Shift und Enter nacheinander abfrage, oder ?

    Danke im voraus
    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  2. #2
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Du kannst in einem KeyListener der TextArea auch auf beides abfragen:

    Code java:
    1
    2
    3
    
    if (e.getKeyCode() == KeyEvent.VK_ENTER && e.isShiftDown()) {
    ...
    }

    Quelle: Java-API, Klasse InputEvent
    Geändert von Tim Bureck (11.11.10 um 11:32 Uhr)
    vfl_freak bedankt sich. 

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    oh, das klingt gut - die Methode kannte ich noch nicht

    Werd's gleich mal austesten!

    Danke und Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    hmm, schade ... der Effekt, den ich erzielen wollte, klappt leider noch nicht so ganz ...
    Aber vlt. sollte ich auch besser dabei schreiben, was ich genau machen soll

    In dem Dialog wird eine Textvorlage vorgeblendet, die dann vom Anwender weiter ausgefüllt werden muss.
    Nun ist es der spezielle Wunsch meines Chefs, dass für den normalen Anwender beim Betätigen von ENTER statt den Einfügen einer neuen Zeile einfach nur der Cursor eine Zeile tiefer wandern soll (was auch problemlos klappt). Da er nun aber erkannt hat, dass dadurch nie neue, event. benötigte Zeilen eingefügt werden können, haben wir uns darauf geeinigt, dass eine neue Zeile mit SHIFT+ENTER eingefügt wird !

    Allerdings klappt folgendes nicht :
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
        public void jTextAreaKQT_keyPressed( KeyEvent e ) 
        { 
            if( (e.getKeyCode()==KeyEvent.VK_ENTER) && !e.isShiftDown() )
            {
                if( rbAusfuellen.isSelected() )
                {
                    e.setKeyCode( KeyEvent.VK_DOWN );  // das klappt wunderbar :-)
                }
            }
                    else if( (e.getKeyCode()==KeyEvent.VK_ENTER) && e.isShiftDown() )
            {
                e.setKeyCode( KeyEvent.VK_ENTER ); // hierauf erfolgt überhaupt keine Reaktion :-(
            }
        } // jTextAreaKQT_keyTyped
    Auch ohne den else-Fall erfolgt keine Reaktion !

    Habe ich irgendeine andere Chance, hier (von mir aus mit einer anderen Taste, bspw. VK_F2) eine neue Zeile einfügen - sprich das KeyEvent VK_ENTER anzstossen ?

    Danke und Gruß
    Klaus


    Danke und Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    ah - eine (vlt. etwas schmutzige) Lösung sieht so aus :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    if( (e.getKeyCode()==KeyEvent.VK_ENTER) && !e.isShiftDown() )
    {
        if( rbAusfuellen.isSelected() )
        {
            e.setKeyCode( KeyEvent.VK_DOWN );
        }
    }
    else if( (e.getKeyCode()==KeyEvent.VK_ENTER) && e.isShiftDown() )
    {
        int iPos = jTextAreaKQT.getCaretPosition( );
        jTextAreaKQT.insert( "\n", iPos );
    }

    Ok, hat sich damit erledigt

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 25.08.10, 19:13
  2. Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
    Von MTMonline im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 25.04.08, 09:49
  3. Antworten: 2
    Letzter Beitrag: 03.01.06, 14:54
  4. Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
    Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 6
    Letzter Beitrag: 27.05.05, 15:29
  5. Antworten: 2
    Letzter Beitrag: 19.05.05, 19:51