仅在选中复选框时才在数据集中添加值

时间:2015-12-16 19:03:44

标签: java actionlistener jcombobox

我有一个循环,它在3系列的数据集中添加值:

for (int j = 0; j < gcArrayList.size(); j++) {
    if (j % 3 == 0) {
        datasetBar.addValue(Float.parseFloat((String) gcArrayList.get(j)),series1, gcDateList.get(j / 3));
    } else if (j % 3 == 1) {
        datasetBar.addValue(Float.parseFloat((String) gcArrayList.get(j)),series2, gcDateList.get(j / 3));
    } else {
        datasetBar.addValue(Float.parseFloat((String) gcArrayList.get(j)),series3, gcDateList.get(j / 3));
    }       
}

然后我希望这些数据集在每个系列中添加值仅当选中其复选框时(我有"First array""Second array""Third array"的3个复选框)。

    array1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JCheckBox ch = (JCheckBox) e.getSource();

            if(ch.isSelected()) {

            } else {

            }
        }
    });

此外,复选框与在数据集中添加值的方法不同。

我不知道如何在复选框的ActionListenerdatasetBar.addValue()之间建立联系。

我尝试过类似的事情:

if(j % 3 ==0 && array1.isSelected()) ...

我知道它不起作用,但我认为解决方案是在该领域的某个地方...... 有谁能够帮我?

感谢。

1 个答案:

答案 0 :(得分:1)

  

我不知道如何使addValue()功能听取复选框。

example存储与TableModel关联的JTable每个复选框的状态。或者,使用List<Boolean>作为模型。每个复选框都应该有一个ActionListener实例,用于更新相应的列表元素。使用复选框的putClientProperty()方法跟踪每个复选框的列表索引。如此PropertyChangeDemo所示,您可以向要观察的组件的封闭Container添加PropertyChangeListener,并在复选框中触发相应的PropertyChangeEvent。 s ActionListener

不是为每个系列添加值,而是相关example扩展AbstractAction以允许JCheckBox切换单个系列的可见性

@Override
public void actionPerformed(ActionEvent e) {
    renderer.setSeriesVisible(i, !renderer.getSeriesVisible(i));
}

image