我进行了一些搜索,当用户按下键#34;空格键"时,我找不到如何调用函数,我有这个代码:
edtCodigos.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE){
callFunction();
}
}
)};
注意:我想避开"空格",该键只用于调用函数
任何想法我该怎么做或代码样品将不胜感激;)
答案 0 :(得分:4)
“用户习惯于输入”空格键“来完成收银员付款等操作。”
就个人而言,我只会使用ActionListener
,以便 Enter 键触发事件。这似乎更自然。
import java.awt.event.*;
import javax.swing.*;
public class TestTextField {
public static void main(String[] args) {
final JTextField field = new JTextField(15);
field.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.println("Enter Pressed: " + field.getText());
}
});
JOptionPane.showMessageDialog(null, field);
}
}
如果您想使用 Space ,可以使用Key Bindings
将字段绑定到字段import java.awt.event.ActionEvent;
import javax.swing.*;
public class TestTextField {
public static void main(String[] args) {
final JTextField field = new JTextField(15);
InputMap imap = field.getInputMap(JComponent.WHEN_FOCUSED);
imap.put(KeyStroke.getKeyStroke("SPACE"), "spaceAction");
ActionMap amap = field.getActionMap();
amap.put("spaceAction", new AbstractAction(){
public void actionPerformed(ActionEvent e) {
System.out.println("Space Pressed: " + field.getText());
}
});
JOptionPane.showMessageDialog(null, field);
}
}
您甚至可以使用DocumentListener来监听文本字段的基础文档中的更改,并检查输入的最后一个字符是否为空格(但这看起来有点多 - 只是一些有关您学习文本组件工作的信息: - )
挑选你的味道。我喜欢第一个。