我有一个 JPanel,其中包含一个 JPanel 和一个 JButton。在内部 JPanel 中,我有一些最初选择的 JCheckBoxes。我已经在我的 JButtons 中添加了一个 actionListener,用于检查是否每个 JCheckBoxes 都更改为未选中的动作执行。但它不起作用。这是我的代码,问题出在哪里?
public LimitPanel(String[] dates, int column) {
GridLayout layout = new GridLayout(1 + dates.length, 0);
setLayout(layout);
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
setVisible(true);
this.dates = dates;
checks = new JCheckBox[dates.length][column-1];
for (int i = 0; i < dates.length; i++) {
for (int j = 0; j < column - 1; j++) {
checks[i][j] = new JCheckBox();
checks[i][j].setSelected(true);
checks[i][j]
.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
add(checks[i][j]);
}
}
}
public JCheckBox[][] getChecks() {
return checks;
}
在我的 Main Clas 中,我有另一种方法,其中包含:
ResultSet e = connect.select("Invi", "*");
try {
while (e.next()) {
final int inviID = e.getInt("inviID");
JPanel pn = new JPanel();
pn.setSize(d.width, d.height);
pn.setLocation(0, 0);
pn.setLayout(new BoxLayout(pn, BoxLayout.PAGE_AXIS));
lp = new LimitPanel(st, 6);
pn.add(lp);
JButton sabt = new JButton(" ثبت ");
sabt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("saaaaaaaaaaaaaaaabt");
JCheckBox[][] jcb = new JCheckBox[lp.getDates().length][5];
jcb = lp.getChecks();
for (int i = 0; i < lp.getDates().length; i++)
for (int j = 0; j < 5; j++) {
if (!jcb[i][j].isSelected()) {
System.out.println("naaaaaaaaa");
connect.insertLimit(inviID, (lp
.getDates())[i], j+"");
}
}
}
});
pn.add(sabt);
panels.add(pn);
}
} catch (SQLException e1) {
e1.printStackTrace();
}
setContentPane(panels.get(p));
revalidate();
我对其进行了编辑以包含必要的内容,我的问题是System.out.println("saaaaaaaaaaaaaaaabt");
当我按下按钮时它总是有效,但我对复选框所做的一切都不起作用System.out.println("naaaaaaaaa");
。