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