实时跟踪字符串中所选项目的数量

时间:2010-01-29 17:22:30

标签: java string swing checkbox

在Java Swing中我有一个简单的表,其中每行包含元素的名称和复选框。用户可以通过单击相关的复选框来选择包含的任何元素。我希望在表格下方有一个字符串,可以不断跟踪所选元素的数量(例如“已选择3个元素”)。因此,一旦使用检查或取消检查元素,字符串就会自动更改。可能吗?我是否需要将事件侦听器关联到每个复选框?

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。但是,您也可以将单个侦听器与所有复选框关联。

JCheckbox check1 = new JCheckbox( "First" );
JCheckbox check2 = new JCheckbox( "Second" );

int numSelected = 0;
JLabel label = new JLabel("0 items selected");

ItemListener itemListener = new ItemListener() {

    public void itemStateChanged( ItemEvent e ) {

        if ( e.getStateChange() == ItemEvent.SELECTED )
            numSelected++;

        else
            numSelected--;

         label.setText(  numSelected + 
                         ( numSelected == 1 ) " item" ? " items" + " selected" );
            // might not have to explicitly re-call label.setText(..)
    }
}

check1.addItemListener( itemListener );
check2.addItemListener( itemListener );