gpt4 book ai didi

java - 如何从文件中选择 LookAndFeel

转载 作者:行者123 更新时间:2023-12-01 13:38:20 27 4
gpt4 key购买 nike

我正在使用 JTattoo 来更改我的应用程序 LookAndFeel。我知道如何设置任何可用的皮肤,但现在我希望用户能够选择其中任何一个。带有 LAF 的字符串被保存在一个文件中,因此每次运行该程序时,它都应该读取该文件并根据您的选择设置皮肤。

我在 GUI 之前显示了一个 JDialogBox,只是为了显示文件是否已被正确读取,事实确实如此。

这正在工作:

UIManager.setLookAndFeel("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel");

但这不是:

UIManager.setLookAndFeel(chooseSkin());

有什么想法吗?

PS:文件中的字符串是正确的,我已经检查了它一百万次,我已经尝试过带引号,没有它们......我不知道现在该怎么办

编辑:请注意,没有名为 ChooseSkin() 的方法,这只是一个简单的引用,真正的方法称为 readFile()

Skins.java

public static String readFile() {
String content = "";
File file = new File("skins.txt");
try {
FileReader reader = new FileReader(file);
char[] chars = new char[(int) file.length()];
reader.read(chars);
content = new String(chars);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(content); // ---> returns: "com.jtattoo.plaf.aluminium.AluminiumLookAndFeel"
return content;
}

Main.java

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
System.out.println(Skins.readFile() =="com.jtattoo.plaf.aluminium.AluminiumLookAndFeel"); // ---> returns false
UIManager.setLookAndFeel(Skins.readFile());
MainGUI frame = new MainGUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

最佳答案

嗯,文件中可能有多余的空格或新行或其他内容,有很多调试技巧,例如打印出字符串的长度。

String laf = "com.jtattoo.plaf.aluminium.AluminiumLookAndFeel";
System.out.println(Skins.readFile().length() + " , " + laf.length())

如果长度不同,您需要确保正确写入文件。它的末尾可能包含换行符“\n”。

有一个名为“equals”的方法,它将严格比较字符序列。例如:

Skins.readFile().equals("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel") 

应该返回true。

UIManager 还会抛出异常吗? (例如java.lang.ClassNotFoundException)如果无法加载LookAndFeel,它应该抛出异常。如果您仍然无法让它工作,请尝试使用:

Skins.readFile().intern();

它将根据“equals”方法返回与其相等的字符串。 (其中字符序列相等)

关于java - 如何从文件中选择 LookAndFeel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21065103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com