点击按住按钮

时间:2013-05-09 22:30:30

标签: java swing jbutton

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

假设我有这个选项(作为JButton)将JTextArea's文本设置为红色。用户单击该按钮,然后退出该程序。当用户重新打开程序时,文本为红色 - 表示仍然单击该按钮。

如果你没有得到那个例子,让我告诉你另一个:

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

我有办法做到吗?

编辑:如果我可以在不加载外部文件的情况下执行此操作,我更愿意。

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

3 个答案:

答案 0 :(得分:4)

You should use Preferences for this.这种解释有点复杂。但基本上它可以保存可以在运行之间检索的值。

Here's a tutorial of how to use this with a 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”。

答案 1 :(得分:2)

  

编辑2:我喜欢使用偏好的想法。但是,你能给我一个   例如上面的一个例子?我是一个初学者   在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));
        }
    });

    // ...
}

答案 2 :(得分:1)

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