In meiner Anwendung verwende ich eine Standardschaltfläche. Ich möchte es reagieren, wenn ENTER
Key ist freigegeben. Nicht bei ENTER
Schlüssel ist gedrückt.Wie Sie die Java-Standardschaltfläche so einstellen, dass sie mit der ENTER-Taste reagiert _released_?
Ich entfernte die KeyStroke
von InputMap
der Schaltfläche. Aber es hat nicht für mich funktioniert. Wie soll ich das machen?
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class ButtonTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
buildFrame();
}
});
}
private static void buildFrame() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JButton button = new JButton(new AbstractAction("Button") {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("ButtonTest::actionPerformed: CALLED");
}
});
JButton button2 = new JButton("Button 2");
InputMap im = button.getInputMap();
im.put(KeyStroke.getKeyStroke("ENTER"), "none");
im.put(KeyStroke.getKeyStroke("released ENTER"), "released");
f.setLayout(new GridBagLayout());
f.add(button);
f.add(button2);
f.getRootPane().setDefaultButton(button);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
Dies ist der Beispielcode.
Beitrag ein Teil von Code ... Ich macht einfach Ihre Lösung zu bekommen ... – Vinesh
welchen Unterschied zwischen keyReleased und KeyPressed ist, weil diese JButton muss einmal Zeit KeyEvent von der Tastatur ENTER empfangen, nicht bedeutet, dass Sie repeatly Brennen die gleiche Aktion bis ENTER ... ???, – mKorbel
in Mein Anwendungsdialog wird angezeigt, nachdem ich die Eingabetaste gedrückt habe, die einen "Suchen" -Button auslöst. Wenn ich die ENTER-Taste längere Zeit gedrückt halte, wird der angezeigte Dialog automatisch geschlossen. Da es Standard-Schaltfläche hat. – Hirantha