我有一个循环,它在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 {
}
}
});
此外,复选框与在数据集中添加值的方法不同。
我不知道如何在复选框的ActionListener
与datasetBar.addValue()
之间建立联系。
我尝试过类似的事情:
if(j % 3 ==0 && array1.isSelected()) ...
我知道它不起作用,但我认为解决方案是在该领域的某个地方...... 有谁能够帮我?
感谢。
答案 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));
}