我是新来的波动,我有一个疑问:一个面板中保存复选框状态/对话框
我有一个对话框,在该对话框中,有一个复选框,确定和取消按钮。 假设用户选中了复选框并单击确定按钮,当用户再次打开该对话框时,复选框应该被选中。
任何人都可以提出想法,如何暗示这一点。
我知道我可以通过使用setSelected(true)和setSelected(false)方法来做到这一点。
但如何保存复选框的状态。
我是新来的波动,我有一个疑问:一个面板中保存复选框状态/对话框
我有一个对话框,在该对话框中,有一个复选框,确定和取消按钮。 假设用户选中了复选框并单击确定按钮,当用户再次打开该对话框时,复选框应该被选中。
任何人都可以提出想法,如何暗示这一点。
我知道我可以通过使用setSelected(true)和setSelected(false)方法来做到这一点。
但如何保存复选框的状态。
您可以将组件传递到JOptionPane
,它们将正确显示。
因此,例如,如果您创建JCheckBox
并将其传递给JOptionPane
,在关闭对话框后,您可以检查复选框的状态并将其存储在任何您想要的位置。下一次要显示对话框时,在通过复选框之前,将其状态设置为您上次存储的状态。
例如(只是为了演示目的):
final JFrame f = new JFrame("Checkbox test");
f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
f.addWindowListener(new WindowAdapter() {
// I store the checkbox state here in a boolean variable:
boolean save;
@Override
public void windowClosing(WindowEvent e) {
// Now user wants to close the application, ask confirmation:
// We create a check box with the initial value of the stored state:
JCheckBox cb = new JCheckBox("Save settings before Exit", save);
int res = JOptionPane.showConfirmDialog(null,
new Object[] {"Are you sure you want to Exit?", cb}, "Exit?",
JOptionPane.OK_CANCEL_OPTION);
// Dialog closed, you can save the sate of the check box
save = cb.isSelected();
if (res == JOptionPane.OK_OPTION) {
if (save) {
// Settings can be saved here.
}
// And exit (by disposing the only frame)
f.dispose();
}
}
});
f.getContentPane().add(new JLabel("Try to close the application"));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
请不要包装成'while(true){'(无尽循环与'true' ???)让我感动 – mKorbel 2014-10-10 13:41:32
@mKorbel无限循环只是为了再次显示对话框,如果它用'Cancel'关闭用户可以看到复选框处于与上次相同的状态。重写了这个例子来代替使用'JFrame'。 – icza 2014-10-10 14:05:10
thx很多@icza。但是,当我检查复选框**保存**,点击取消,再次调用JOptionPane,我看到**保存**仍然被选中。应**保存**不重置他的状态,只有当我点击**确定**时才保存它。 – okaisan1 2014-10-13 08:27:35
顶我的头:保存到数据库,写/解析为文本(属性文件,XML,JSON,生TXT),读/写对象文件或使用Java首选项 – gtgaxiola 2014-10-10 13:24:33
保留对原始对话框的引用。到了时候,再次将其设置为可见,并且它将具有相同的大小和位置,并且其中的每个控件都具有相同的状态。 – 2014-10-10 22:36:20