我是新來的波動,我有一個疑問:一個面板中保存複選框狀態/對話框
我有一個對話框,在該對話框中,有一個複選框,確定和取消按鈕。 假設用戶選中了複選框並單擊確定按鈕,當用戶再次打開該對話框時,複選框應該被選中。
任何人都可以提出想法,如何暗示這一點。
我知道我可以通過使用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