Java 将按钮单击事件传递到按键时执行的操作
我正在处理一个Java任务,它必须使用AWT来完成。我想要一个按钮,当按钮处于焦点时按下回车键触发。我用doClick()方法在Swing中解决了这个问题,但在AWT中似乎不起作用。到目前为止,我正在尝试:Java 将按钮单击事件传递到按键时执行的操作,java,awt,actionlistener,keylistener,keyevent,Java,Awt,Actionlistener,Keylistener,Keyevent,我正在处理一个Java任务,它必须使用AWT来完成。我想要一个按钮,当按钮处于焦点时按下回车键触发。我用doClick()方法在Swing中解决了这个问题,但在AWT中似乎不起作用。到目前为止,我正在尝试: button.addActionListener(this); // Passes value from a TextBox to actionPerformed() button.addKeyListener(new KeyAdapter() { public void key
button.addActionListener(this); // Passes value from a TextBox to actionPerformed()
button.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER) {
actionPerformed(null);
}
}
});
public void actionPerformed (ActionEvent e) {
try {
if (e.getSource() == button) {
// Stuff I want to happen
} else if (e.getSource() == anotherButton) {
// Other Stuff
} else { //third button
// More stuff
}
} catch (NumberFormatException nfe) {
// Null argument in keyPressed triggers this
// catches empty string exception from TextBox
}
}
正如我在注释中提到的,null参数将触发catch。有人知道按钮按下的理由是什么,或者是一种更简单的方法吗?谢谢
编辑-澄清:actionPerformed()根据单击三个按钮中的哪一个,对文本框中的输入执行以下三项操作之一。try/catch用于捕获空字符串/格式异常。您总是可以有一个名为
onButtonPress()
的方法,您的操作执行
以及您的按键
都可以调用该方法
button.addActionListener(this);
button.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
onButtonPress();
}
}
});
public void actionPerformed (ActionEvent e) {
if (e.getSource() == button){
onButtonPress();
}
}
private void onButtonPress(){
// do something
}
您总是可以调用一个名为
onButtonPress()
的方法,您的操作执行
可以调用该方法,也可以调用您的按键
button.addActionListener(this);
button.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
onButtonPress();
}
}
});
public void actionPerformed (ActionEvent e) {
if (e.getSource() == button){
onButtonPress();
}
}
private void onButtonPress(){
// do something
}
。。。这必须使用AWT完成。
ack!我为你感到难过(通常,依靠异常处理来触发事件/将它们当作条件来使用是不好的做法。可能只有我一个人,但我的操作中只有if
和else if
(或类似操作)方法。如果您的actionPerformed
是从未设置条件的组件调用的,则忽略它。换句话说,如果源是button
,则调用onButtonPress()
,如果不是,则忽略它。如果您有另一个名为button2
的按钮,则添加}否则(source==button2){
到您的操作执行
。我永远不会在操作执行
中有捕获
或其他
…这必须使用AWT来完成。
确认!我为您感到抱歉。:(通常,依靠异常处理来触发事件/将它们当作条件来使用是不好的做法。可能只有我一个人,但我的操作中只有if
和else if
(或类似操作)方法。如果您的actionPerformed
是从未设置条件的组件调用的,则忽略它。换句话说,如果源是button
,则调用onButtonPress()
,如果不是,则忽略它。如果您有另一个名为button2
的按钮,则添加}否则(source==button2){
到您的actionPerformed
。在actionPerformed
中,我永远不会有一个catch
或一个else
。我没有考虑过这一点,但我最终不得不打破actionPerformed()中的所有条件我试图避免的方法。所以您确实希望在您的actionPerformed
中包含条件/if else
?我没有考虑过这一点,但我最终不得不分解actionPerformed()中的所有条件我试图避免的方法。那么您是否希望在您的操作执行中包含条件/if else
?