我正在尝试在游戏中创建一个按钮,背景颜色将从light_gray变为dark_gray。但是,当应用程序重新启动时,我必须重新选择按钮以将颜色恢复为dark_gray。
如何在重新启动应用程序时保存颜色?
我的代码非常简单,只是按钮上的动作侦听器,然后更改所选项目的bg颜色。
好的,我现在有机会允许它创建属性文件,但是人们不知道如何存储数据。我见过人们有像'property.setProperty(“最喜欢的运动”,“足球”)这样的东西;' 但是怎么能这样才能存储bg颜色呢?
windowDark.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae)
{
try {
Properties properties = new Properties();
properties.setProperty();
File file = new File("DarkTheme.properties");
FileOutputStream fileOut = new FileOutputStream(file);
properties.store(fileOut, "Dark theme background colour");
fileOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
答案 0 :(得分:5)
java.util.prefs
首选项API非常适合存储桌面上运行的用户应用程序的持久首选项数据。
以下是一个示例,您可以使用它来存储和检索持久性背景颜色设置:
import java.awt.Color;
import java.util.prefs.Preferences;
public class MyPrefs {
private static Preferences preferences =
Preferences.userRoot().node("myappname.ColorPreferences");
public static void storeBackground(Color background) {
preferences.putInt("background", background.getRGB());
}
public static Color retrieveBackground() {
// Second argument is the default when the setting has not been stored yet
int color = preferences.getInt("background", Color.WHITE.getRGB());
return new Color(color);
}
}
要调用它,请使用以下内容:
public static void main(String[] args) {
System.out.println("Background: " + retrieveBackground());
storeBackground(Color.RED);
}
答案 1 :(得分:2)
您可以将颜色作为int值存储在属性文件中,如下所示:
windowDark.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
getProperties().setProperty("color", Integer.toString(getColor().getRGB()));
}
});
将属性作为此按钮所在窗口的成员,或者甚至更好,在应用程序的某个常规位置(具有main()的类可能?),并使用getProperties()
访问它。
当您需要使用颜色时,解析字符串:
Color color = new Color(Integer.parseInt(getProperties().getProperty("color")));
不要在每次点击按钮时保存属性文件,而是在应用程序即将退出时执行此操作:
mainWindow.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
mainWindow.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
try {
File file = new File("DarkTheme.properties");
FileOutputStream fileOut = new FileOutputStream(file);
getProperties().store(fileOut, "Dark theme background colour");
fileOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
mainWindow.dispose();
}
}
});
答案 2 :(得分:0)
一旦应用程序终止,将在内存中完成更改。如果你想保留一些数据(在这种情况下,背景颜色),那么你需要存储在某个地方,例如文件,数据库等 对于简单的应用程序,将数据存储在文件中将是实用的。 为此,您需要: - 应用程序启动时,读取文件,然后应用文件中指定的颜色 - 当应用程序正在运行且用户更改颜色时,将颜色保存到同一文件中 要处理文件,您需要使用File,FileReader和FileWriter类(都在java.io包中)。