有没有办法在Java中进行分组复选框?

时间:2014-10-22 23:13:20

标签: java checkbox

例如,选中父复选框将选中所有子复选框(反之亦然,如果取消选中父复选框)。

如果取消选中子复选框,则父复选框中的复选标记将变为一个框。

如果取消选中所有子复选框,则父复选框也将取消选中。

例如,类似这样,但在Java中。 enter image description here

1 个答案:

答案 0 :(得分:0)

这不是JCheckBox组件的真正分组,但它模拟分组并且应该向外显示您描述的行为。您可以随时实现自己的分组复选框类,但我怀疑我的方法更有效。

// UI element declarations

JCheckBox cbAsia = new JCheckBox("Asia");
cbAsia.addItemListener(this);

JCheckBox cbChina = new JCheckBox("China");

JCheckBox cbIndia = new JCheckBox("India");

JCheckBox cbJapan = new JCheckBox("Japan");

JCheckBox cbPakistan = new JCheckBox("Pakistan");

JCheckBox cbThailand = new JCheckBox("Thailand");

JCheckBox cbVietnam = new JCheckBox("Vietnam");

// Item state handling loop

public void itemStateChanged(ItemEvent e)
{
    Object source = e.getItemSelectable();

    if (source == cbAsia)
    {
        if(e.getStateChange() == ItemEvent.SELECTED)
        {
            cbChina.setSelected(true);
            cbIndia.setSelected(true);
            cbJapan.setSelected(true);
            cbPakistan.setSelected(true);
            cbThailand.setSelected(true);
            cbVietnam.setSelected(true);
        }
        else
            cbChina.setSelected(false);
            cbIndia.setSelected(false);
            cbJapan.setSelected(false);
            cbPakistan.setSelected(false);
            cbThailand.setSelected(false);
            cbVietnam.setSelected(false);
        }
    }
}