Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在面板/对话框中保存复选框状态_Java_Swing_Checkbox_Dialog - Fatal编程技术网

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

Java 在面板/对话框中保存复选框状态,java,swing,checkbox,dialog,Java,Swing,Checkbox,Dialog,我对秋千还不熟悉,我有一个疑问: 我有一个对话框,在这个对话框中,有一个复选框,Ok和Cancel按钮。 假设用户选中复选框并单击“确定”按钮,当用户再次打开该对话框时,该复选框应为选中状态 谁能给出一个想法,如何实现这一点 我知道我可以通过使用setSelected(true)和setSelected(false)方法来实现这一点 但是如何保存复选框的状态。您可以将组件传递到作业窗格,它们将正确显示 因此,例如,如果您创建一个JCheckBox并将其传递到JOptionPane,则在对话框关闭

我对秋千还不熟悉,我有一个疑问:

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

谁能给出一个想法,如何实现这一点

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


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

您可以将组件传递到
作业窗格,它们将正确显示

因此,例如,如果您创建一个
JCheckBox
并将其传递到
JOptionPane
,则在对话框关闭后,您可以检查复选框的状态并将其存储到任何您想要的位置。下次要显示对话框时,在通过复选框之前,请将其状态设置为上次存储的状态

例如(仅用于演示目的):


最重要的是:保存到DB,以文本形式写入/解析(属性文件、xml、json、原始txt),将对象读/写到文件,或者使用Java首选项保留对原始对话框的引用。当时间到来时,再次将其设置为可见,它将具有相同的大小和位置,并且其中的每个控件将具有相同的状态。请不要将其包装为
while(true){
(带
true的无休止循环)
??)让我sence@mKorbel无休止的循环只是为了在对话框用
Cancel
关闭时自动再次显示对话框,这样用户就可以看到复选框与上次处于相同的状态。修改了示例,改为使用
JFrame
。thx很多@icza。但是当我选中复选框save时,单击Cancel,调用JOptionPane a增益我看到保存仍处于选中状态。是否保存不应重置其状态,而仅在我单击“确定”时保存?@okaisan1此示例的目的正是如何使对话框上的复选框在对话框关闭并重新打开时保持/记住其值。此示例不是关于如何保持和加载设置。
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);