我正在创建一个ToolBar
,其中包含一个JButton
和一些JCheckBox
来隐藏或显示JTable
中的列。
JButton
主要目的是在点击后将JCheckBox
中的所有其他ToolBar
重置为全部已选中或全部未选中。实际上我假装一旦点击重置就检查所有这些。
我可以创建并放置它们,这里没有问题。
我的问题是如何点击JButton来重置ToolBar
中的所有JCheckBox。
这是我的代码,我在其中创建并添加Action
。
final JToolBar toolBarTop = new JToolBar();
// The Reset Button
toolBarTop.add(new JButton(new AbstractAction("Reset") {
@Override
public void actionPerformed(ActionEvent e) {
columnModel.setAllColumnsVisible();
}
}));
// Create a JCheckBox for each column
for(int i = 0; i < labelsCheckBox.size(); i++)
{
final int index = i;
toolBarTop.add(new JCheckBox(new AbstractAction(labelsCheckBox.get(i)) {
@Override
public void actionPerformed(ActionEvent e) {
TableColumn column = columnModel.getColumnByModelIndex(index);
boolean visible = columnModel.isColumnVisible(column);
columnModel.setColumnVisible(column, !visible);
}
}));
}
答案 0 :(得分:5)
ArrayList<JCheckBox>
类字段。 for(int i = 0; i < labelsCheckBox.size(); i++)
for循环中填充。答案 1 :(得分:2)
我的问题是如何点击
JButton
重置所有内容JCheckBox
ToolBar
中的toolBarTop
。 [...] 实际上,我假装点击重置后会检查所有内容。
尝试迭代JCheckBox
组件,询问每个组件是否是true
的实例。如果是,请将所选内容设置为JButton reset = new JButton("Reset");
reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(Component c : toolBarTop.getComponents()){
if(c instanceof JCheckBox){
JCheckBox checkBox = (JCheckBox) c;
checkBox.setSelected(true);
}
}
}
});
:
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
public class Demo {
private void initGUI(){
final JToolBar toolBarTop = new JToolBar();
toolBarTop.add(new JCheckBox("Check 1"));
toolBarTop.add(new JCheckBox("Check 2"));
toolBarTop.add(new JCheckBox("Check 3"));
JButton reset = new JButton("Reset");
reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(Component c : toolBarTop.getComponents()){
if(c instanceof JCheckBox){
JCheckBox checkBox = (JCheckBox) c;
checkBox.setSelected(true);
}
}
}
});
toolBarTop.add(reset);
JPanel content = new JPanel(new FlowLayout());
content.setPreferredSize(new Dimension(300, 200));
content.add(toolBarTop);
JFrame frame = new JFrame("Demo");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setContentPane(content);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Demo().initGUI();
}
});
}
}
这是一个完整的SSCCE来测试它:
{{1}}