0

如何在用户退出程序后使按钮保持点击状态?

假设我有这个选项(作为 JButton)将JTextArea's文本设置为红色。用户单击按钮,然后退出程序。当用户打开程序备份时,文本是红色的 - 意味着按钮仍然被点击。

如果你不明白这个例子,让我再给你看一个:

我有一个JButton,和一个JLabel。单击按钮时,它会将背景更改JLabel为蓝色。用户单击按钮,然后退出程序。当用户打开程序备份时,该按钮已被单击,这意味着JLabel的背景颜色为蓝色。

有没有办法我可以做到这一点?

编辑:如果我可以在不加载外部文件的情况下做到这一点,我会更喜欢。

编辑 2:我喜欢使用Preference. 但是,你能给我一个上面的例子吗?我是Java的初学者,所以我有很多问题。就像,代码是否actionPerformed在按钮中?而且,我怎样才能保存不同类型的信息(JTextarea前景为红色)Preferences

4

3 回答 3

4

您应该为此使用首选项。 这个解释有点复杂。但基本上它保存了可以在运行之间检索的值。

这是一个关于如何将其与 JFileChooser 一起使用的教程。 这是我写的一个例子:

package com.sandbox;

import java.util.prefs.Preferences;

public class Sandbox {

    public static void main(String[] args) {
        Preferences prefs = Preferences.userNodeForPackage(Sandbox.class);
        Integer counter = Integer.valueOf(prefs.get("counter", "0"));
        System.out.println(counter);
        counter++;
        prefs.put("counter", String.valueOf(counter));
    }
}

第一次运行时,它会打印“0”。下次你运行它时,它会打印“1”。

于 2013-05-09T22:40:51.717 回答
2

编辑 2:我喜欢使用 Preference 的想法。但是,你能给我一个上面的例子吗?我是Java的初学者,所以我有很多问题。就像,代码是否在按钮的 actionPerformed 中?而且,如何使用首选项保存不同类型的信息(JTextarea 前景为红色)?

像这样做:

private static Preferences prefs = Preferences.userNodeForPackage(className.class);
private JFrame frame;
private JTextArea textArea;

public void init()
{
    frame = new JFrame();
    textArea = new JTextArea();

    // ...

    String storedValue = prefs.get("textAreaColor", null);
    if(storedValue != null)
    {
        Color color = new Color(Integer.parseInt(storedValue));
        textArea.setForeground(color);
    }

    frame.addWindowListener(new WindowAdapter()
    {
        @Override
        public void windowClosed(WindowEvent e)
        {
            Color color = textArea.getForeground();
            int rgb = color.getRGB();
            prefs.put("textAreaColor", Integer.toString(rgb));
        }
    });

    // ...
}
于 2013-05-09T23:46:36.420 回答
1

将设置保存到外部文件。然后(尝试)在程序启动时读取该文件并应用设置。

于 2013-05-09T22:37:00.137 回答