如何在用户退出程序后按钮保持点击状态?
假设我有这个选项(作为JButton)将JTextArea's
文本设置为红色。用户单击该按钮,然后退出该程序。当用户重新打开程序时,文本为红色 - 表示仍然单击该按钮。
如果你没有得到那个例子,让我告诉你另一个:
我有JButton
和JLabel
。单击该按钮时,它会将JLabel
的背景更改为蓝色。用户单击该按钮,然后退出该程序。当用户重新打开程序时,该按钮已被点击,这意味着JLabel
的背景颜色为蓝色。
我有办法做到吗?
编辑:如果我可以在不加载外部文件的情况下执行此操作,我更愿意。
编辑2:我喜欢使用Preference
的想法。但是,你可以给我一个例子来说明上面的一个例子吗?我是一名Java初学者,所以我有很多问题。比如,代码是否在按钮的actionPerformed
中?而且,我怎么能用JTextarea
保存不同类型的信息(Preferences
前景为红色)?
答案 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)
将设置保存到外部文件。然后(尝试)在程序启动时读取该文件并应用设置。