由于某些原因,我无法找出我的代码出了什么问题。基本上
在这种情况下,我有一个计数器(总数)初始化为2
每次检查JCheckbox
时,最大增量为6(在本例中为4),并在单击过多时抛出一条消息。
首先,当恰好检查了总共6个时,它将抛出空指针;但如果选择了6个以上的复选框,则效果很好,然后单击多个按钮将其减少到6个。
谁能引导我到我的头上乱七八糟的地方?非常感谢你。
public void panelThree(JTable user, JButton save, JButton logout, JButton exit, int j) {
System.out.println("J in external main is: " + j);
save.addActionListener(new ActionListener() {
boolean arr[] = new boolean[user.getRowCount()];
public void actionPerformed(ActionEvent e) {
int total = j;
System.out.println("Total in listener is: "+total);
System.out.println("No of rows: " + user.getRowCount());
for (int z = 0; z < arr.length; z++) {
arr[z] = false;
}
for (int i = 0; i < user.getRowCount(); i++) {
if (Boolean.valueOf(user.getModel().getValueAt(i, 3).toString()) == true) {
if (arr[i] == false) {
arr[i] = true;
total++;
}
} else {
if (arr[i] == true) {
arr[i] = false;
total--;
}
}
}
System.out.println("Total is: " + total);
if (total > 6) {
JOptionPane.showMessageDialog(null, "Please choose up to a maximum of " + (6 - j) + " modules");
} else {
int reply = JOptionPane.showConfirmDialog(null, "Are you sure to enroll in these modules?", "Yes", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, "Enrollment Successful");
}
}
}
});
}
if (Boolean.valueOf(user.getModel().getValueAt(i, 3).toString()) == true)
行似乎是所有错误的原因,我正在控制台进行的所有编辑都在该行说空指针 最佳答案
您的表似乎包含空值。因此,您需要在支票中加以考虑。像这样:
if (user.getModel().getValueAt(i, 3) == Boolean.TRUE)
如果我的建议不起作用,请提供SSCCE,这样我们也可以重现您的问题。
关于java - 检索JTable中JCheckbox的状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43656806/