我是新来的Java和努力的东西,我敢肯定必须有一个简单的答案,但我似乎无法找到它。 我有复选框对象数组定义为:Java JCheckBox ArrayList帮助需要
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,这个复选框的ArrayList可以使用'Save'和'Load'GUI按钮进行保存和恢复。我的代码加载保存的对象如下:
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上的复选框对象?任何帮助将非常感激。
谢谢!
需要一点澄清。你想在面板上反思它吗? – Sage
你不需要实现Serializable,ArrayList已经实现了Serializable。 – Madeyedexter