2016-06-07 11 views
0

Ich möchte im Grunde ein JButton durch Drücken einer Taste auf meiner Tastatur drücken können. Zum Beispiel:Verbinden Sie JButtons mit Keys

Wenn ich "T" drücke, sollte es den JButton "Testing" verwenden. Wenn ich "H" drücke, sollte es die JButton "Hallo" und so weiter verwenden ...

was ist der einfachste (und faulste) Weg, dies zu tun?

Antwort

0

Set mnemonic char auf diese Schaltfläche

JButton btnTesting = new JButton("Testing"); 
btnTesting.setMnemonic('T'); 

Sie werden es in diesem Fall durch Drücken von Alt + T verwenden.

EDIT

Um diese Funktion ohne ALT-Taste reproduzieren Sie, dass Sie auf dem Behälter halten Ihre Tasten registrieren verwenden, müssen KeyListener. Sie müssen eine Logik implementieren, die bestimmt, welcher Schlüssel welcher Schaltfläche entspricht.

Probe:

import java.awt.EventQueue; 
import java.awt.FlowLayout; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

    public class ButtonPressDemo { 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        initGUI(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    private static void initGUI() { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setBounds(100, 100, 300, 300); 

     JPanel contentPane = new JPanel(); 
     contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); 
     // add your buttons 
     contentPane.add(new JButton("A")); 
     contentPane.add(new JButton("B")); 
     contentPane.add(new JButton("C")); 

     contentPane.addKeyListener(new KeyAdapter() { 

      @Override 
      public void keyPressed(KeyEvent e) { 
       int keyPressed = e.getKeyCode(); 
       System.out.println("pressed key: "+keyPressed); 
       // do something ... 
      } 
     }); 
     contentPane.setFocusable(true); // panel with keyListener must be focusable 
     frame.setContentPane(contentPane); 
     contentPane.requestFocusInWindow(); // panel with key listener must have focus 
     frame.setVisible(true); 
    } 
} 

Mit diesem Ansatz Ihre GUI nicht visuell reagieren die mnemonic Taste dh Tasten drücken, wird nicht animieren, wie sie es mit dem setMnemonic und dem mnemonic char wird nicht automatisch in Etikett unterstrichen werden die Taste.

+0

Gibt es keine Möglichkeit, es ohne "alt" zu machen? –

+0

Sie müssten den Listener im Bedienfeld registrieren, in dem Ihre Schaltflächen das Zeichen enthalten, das getippt wurde, und bestimmen, welche Schaltfläche es darstellt. – MatheM