が押されたときにトリガーされるKeyListener
onJTextField
単に addを使用しないでください(アドバイスについては @robin +1 に感謝します)。ActionListener
ENTER
JTextField textField = new JTextField();
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
//do stuff here when enter pressed
}
});
コンポーネントでの使用KeyEvent
をトリガーし、クラスを使用してキーの押下をシミュレートするにはrequestFocusInWindow()
Robot
そのようです:
textField.requestFocusInWindow();
try {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
} catch (AWTException e) {
e.printStackTrace();
}
例:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField();
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
System.out.println("Here..");
}
});
frame.add(textField);
frame.pack();
frame.setVisible(true);
textField.requestFocusInWindow();
try {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
} catch (AWTException e) {
e.printStackTrace();
}
}
});
}
}
アップデート:
@Robin や @mKorbel などの他の人が示唆しているように、DocumentListener
/が必要になる可能性がありますDocumentFiler
(フィルターJTextField
は更新前に検証を許可します)。
これは、データ検証 IMO の場合に必要になります。
ここでこの同様の質問を参照してください
データ検証DocumentFilter
のために に を追加する方法を示します。JTextField
ドキュメントフィルターの理由は、私が言ったように、変更が表示される前に検証を許可するためです。これは、より便利な IMO です。