我试图在我的组合框中绑定(bind)一个 focuslost 事件,但它没有发生。
这是我的代码:
jComboBox1.addFocusListener(new FocusListener(){
public void focusGained(FocusEvent e){
}
public void focusLost(FocusEvent e){
JOptionPane.showConfirmDialog(null,"focuslost");
}
});
我也试过这个-:
JComboBox 默认编辑器有一个内部类 BasicComboBoxEditor$BorderlessTextField,它是获取和失去焦点的组件。
它可以简单地通过-访问:
Component component = comboBox.getEditor().getEditorComponent();
if (component instanceof JTextField)
JTextField borderlesstextfield = (JTextField) borderless;
但是我在这条线上遇到了错误-
JTextField borderlesstextfield = (JTextField) borderless;
我是 netbeans 的新手。请指导我。提前谢谢你。
最佳答案
我对此进行了测试(在 JPanel 中添加 JComboBox)。如果面板内有更多元素,则在按下 Tab 键或单击另一个元素时会触发焦点丢失。
考虑到您没有任何其他元素,或者您希望在单击窗口上的某个位置时也触发焦点丢失事件:
保持焦点监听器不变,并在自动生成的 initComponents()
之后添加以下内容:
jPanel1.setFocusable(true);
jPanel1.setRequestFocusEnabled(true);
jPanel1.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
jPanel1.requestFocusInWindow();
}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
关于event-handling - netbeans 中 Jcombobox 上的 Focuslost 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862466/