我是 Java 新手,并且正在努力解决一些问题,我确信必须有一个简单的答案,但我似乎找不到它。我有一组复选框对象定义为:
ArrayList<JCheckBox> checkBoxList
使用网格布局创建 JPanel,并将复选框添加到 JPanel 和 ArrayList:
for (int i = 0; i < 256; i++) {
JCheckBox c = new JCheckBox();
c.setSelected(false);
checkBoxList.add(c);
mainPanel.add(c);
}
是的,有 256 个复选框!面板被添加到 JFrame 中,最终显示 GUI。用户可以选择 256 个复选框的任意组合。
我的类实现了 Serializable 并且可以使用“保存”和“加载”GUI 按钮来保存和恢复这个复选框的 ArrayList。我加载保存对象的代码如下:
public class LoadListener implements ActionListener {
public void actionPerformed(ActionEvent a) {
try {
// Prompt the user for a load file
JFileChooser fileLoad = new JFileChooser();
fileLoad.showOpenDialog(mainFrame);
// Create a object/file input stream linking to the selected file
ObjectInputStream is = new ObjectInputStream(new FileInputStream(fileLoad.getSelectedFile()));
// Read the checkBox array list
checkBoxList = (ArrayList<JCheckBox>) is.readObject();
is.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
在加载 ArrayList 对象时,复选框的值已正确填充,但是我想更新 GUI 上的复选框以反映这一点。是否有捷径可寻?我假设复选框数组具有正确的值,我可以重新绘制面板/框架,但这不起作用。我想了解为什么 - 我加载的复选框对象数组不再反映 GUI 上的复选框对象?任何帮助将非常感激。
谢谢!