Java 如何设置单击复选框时其他项目可见?
我已经用JavaSwing编写了一个框架。里面有一个复选框。我想,点击复选框后,其他项目将改变它的可见性。我试图按照下面的代码来做,但并没有按照我的意愿工作Java 如何设置单击复选框时其他项目可见?,java,swing,checkbox,Java,Swing,Checkbox,我已经用JavaSwing编写了一个框架。里面有一个复选框。我想,点击复选框后,其他项目将改变它的可见性。我试图按照下面的代码来做,但并没有按照我的意愿工作 public InFrm() { setTitle("In"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); getContentPane().setLayout(new GridLayout(1
public InFrm() {
setTitle("In");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
getContentPane().setLayout(new GridLayout(1, 1, 0, 0));
seeMe=false;
JSplitPane splitPane = new JSplitPane();
splitPane.setResizeWeight(0.7);
splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
getContentPane().add(splitPane);
JPanel panel = new JPanel();
splitPane.setLeftComponent(panel);
panel.setLayout(null);
JPanel panel_1 = new JPanel();
splitPane.setRightComponent(panel_1);
panel_1.setLayout(null);
JLabel lblKind= new JLabel("Kind");
lblKind.setBounds(10, 8, 33, 14);
lblKind.setVisible(seeMe);
panel_1.add(lblKind);
JComboBox ChoiceOd = new JComboBox();
ChoiceOd.setBounds(53, 5, 28, 20);
ChoiceOd.setVisible(seeMe);
panel_1.add(ChoiceOd);
// more items using seeMe
JCheckBox chckbxOd = new JCheckBox("Od");
chckbxOd.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
seeOd();
}
});
chckbxOd.setBounds(6, 150, 97, 23);
panel.add(chckbxOd);
}
protected void seeOd() {
if(seeMe){
seeMe=false;
}
else
{
seeMe=true;
}
}
在see方法中,您只设置了标志,但它当然不会设置组件的可见性。将可见性直接设置到组件,这样它就可以工作了您的侦听器应该如下所示:
public void itemStateChanged(ItemEvent ev) {
Object item = ev.getItem();
if (ev.getStateChange() == ItemEvent.DESELECTED) {
//hide the component associated with this item
} else {
//show the component associated with this item
}
}
哦,现在我知道该怎么办了。但是,是否可以将我想要的所有项目打包为可见或不可见,并更改包的状态,使其全部消失或显示为可见?因为标志是一个基本元素,您不能像您想要的那样(参考),您必须迭代所有框,并为它们设置标志