在面板/对话框中保存复选框状态

时间:2014-10-10 13:17:31

标签: java swing checkbox dialog

我是新手,我有一个疑问:

我有一个对话框,在该对话框中,有一个复选框,确定和取消按钮。 假设用户选中复选框并单击确定按钮,当用户再次打开该对话框时,复选框应为选中状态。

任何人都可以提出想法,如何实现这一点。

我知道我可以通过使用setSelected(true)和setSelected(false)方法来实现这一点。

但是如何保存复选框的状态。

1 个答案:

答案 0 :(得分:1)

您可以将组件传递到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);