【发布时间】:2015-06-14 07:11:47
【问题描述】:
我有这段代码,我设计了一个editable JComboBox 来监听我的keyPressed 事件并显示按下该键的消息。但我不知道为什么这不起作用。 作为一个初学者,我可能在逻辑/概念上出错了。
所以,我会请求有关如何构建代码的建议,以便它工作。
代码
import javax.swing.*;
import java.awt.*;
public class testEJCBX extends JFrame {
JComboBox jcbx = new JComboBox();
public testEJCBX() {
super("Editable JComboBox");
jcbx.setEditable(true);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(jcbx);
jcbx.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt)
{
jcbxKeyPressed(evt);
}
});
setSize(300, 170);
setVisible(true);
}
private void jcbxKeyPressed(java.awt.event.KeyEvent evt) {
JOptionPane.showMessageDialog(null, "Key Pressed");
}
public static void main(String argv[]) {
new testEJCBX();
}
}
【问题讨论】:
-
KeyListener通常是一个糟糕的选择,但在您的情况下,KeyEvents 不会发送到JComboBox,而是发送到充当编辑器的组件JComboBox。你想达到什么目的? -
我只是想在
Editable JComboBox内按下任意键时收到一条消息 -
我会“建议”一个
DocumentListener,混合一个 SwingTimer和一个SwingWorker,你不想在每次击键时都跑到数据库中,你需要允许用户停止输入,for example -
是的,为此我不想重新发明轮子:)。我想过使用 SwingX
AutoCompleteDecorator.decorate(jcbx)。 -
坚持一周左右,你会看到这样的问题被问了大约 2-3 次,并不总是准确,但接近它。此外,我们错过了您的问题的上下文“我有这个代码,它不工作”并不能真正帮助我们帮助你,只是说;) - 哦,如果我投反对票,你会知道是我;) ,因为在我求助之前,我会花一些时间鼓励您改进您的问题/答案;)