我有一个jframe,它有一个jcmbobox,有三个状态(三个项目,从0到2)。
我想当用户选择第二项(1)我的jlabel应该显示!
但是现在,当我选择第二项时,不显示它!
public class LoginFrame extends javax.swing.JFrame {
public LoginFrame() {
initComponents();
this.setTitle("Library Management System Login");
this.setLocation(300, 50);
this.setResizable(false);
if (jComboBox1.getSelectedIndex() == 1) {
jLabel4.setVisible(true);
}
else{
jLabel4.setVisible(false);
}
}
我在IDE菜单中选择的索引号是0
构造函数中的任何代码都不会反映对JComboBox
中选定项所做的更改。您需要使用Listener
(如ActionListener
)来检测这些更改:
jComboBox1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jLabel4.setVisible(jComboBox1.getSelectedIndex() == 1);
}
});
题外话:通过在setVisible
语句中直接使用比较表达式,可以稍微改进一下,如下所示。
请参见处理组合框上的事件
您应该使用ActionListener
来做到这一点:
jComboBox1.addActionListener(this);
...
jLabel4.setVisible(jComboBox1.getSelectedIndex() == 1);