【问题标题】:How to set another Items Visible when Checkbox is clicked?单击复选框时如何设置另一个项目可见?
【发布时间】:2016-02-29 23:02:11
【问题描述】:

我在 java swing 中写了一个框架。在其中我有一个复选框。我想要,点击复选框后其他项目将改变它的可见性。我试图按照下面的代码执行此操作,但没有按我的意愿工作。

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;
    }
}

【问题讨论】:

    标签: java swing checkbox


    【解决方案1】:

    在您的 see 方法中,您只设置标志,但当然它不会设置组件的可见性。将可见性直接设置为组件,然后它将起作用

    【讨论】:

    • 哦,现在我知道该做什么了。但是是否可以将我想要可见或不可见的所有项目打包并更改包装的状态,以便全部消失或显示可见?
    • 由于标志是一个原语,你不能像你想要的那样拥有它(参考),你必须遍历所有的盒子并为它们设置标志
    【解决方案2】:

    您的 Listener 应该如下所示:

    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
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多