我试图在我的组合框上绑定一个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的新手。请指导我。提前谢谢你。
答案 0 :(得分:2)
我测试了这个(在JPanel中添加JComboBox)。如果面板内有更多元素,则在按Tab键或单击另一个元素时会触发focuslost。
考虑到您没有任何其他元素,或者您希望在单击窗口某处时触发焦点丢失事件:
按原样保持焦点监听器,并在自动生成的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) {}
});