我正在试验Java UIManager和不同外观的使用。我很快发现,这不仅仅是在applet开始时设置外观和感觉,然后奇迹般地看到对UI的更改。我发现,对于某些LAF,我会发现奇怪的不可预测的行为和失败。例如,当我将JLabel的字体设置为Arial,大小为8,字体为粗体时,得到的文本将是一个破折号"-“,而不是使用Windows或Classic Windows LAF指定的文本。在其他情况下,比如Mac,JTrees停止工作(我在Windows平台上实现我的应用程序)。因此,我想知道,在更改Java LAF时是否需要遵循一组步骤,以便无论我选择什么LAF,我都可以确保从Swing的其余部分获得可靠和可预测的行为?是不是只有某些LAF的健壮,其余的只适合内心勇敢的人?
提前感谢您的回复。
发布于 2011-05-14 21:50:09
我不知道如何准确地回答你的问题。我所能做的就是展示我是如何使用不同的UI来运行我的应用程序的,请看下面。这个例子展示了我是如何从the Substance library安装一个Look and Feel的。
public static void main(String[] argv) throws InterruptedException, InvocationTargetException
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
try
{
UIManager.setLookAndFeel(new SubstanceSaharaLookAndFeel());
//Some people say the below should also be called but even without it always worked for me so what is this for then?
//SwingUtilities.updateComponentTreeUI(frame);
}catch(Exception e)
{
Logger.getLogger(MyApplicationFrame.class.getName()).log(Level.SEVERE, null, e);
System.out.println("Substance look and feel failed to initialize");
}
new MyApplicationFrame();
}
});
}至于代码中关于调用SwingUtilities.updateComponentTreeUI(frame);的注释,我猜当你在应用程序已经运行的时候改变你的外观时需要它。
希望能对你有所帮助。
发布于 2011-05-14 23:05:32
例如,当我将JLabel的字体设置为Aria1,大小为8,字体为粗体时,得到的文本将是一个破折号"-“,而不是指定的文本。
可能是因为您的代码没有使用布局管理器,而您在代码中的某个地方使用了setBounds(...)或setPreferredSize()。
所以我想知道,在更改Java
时,有没有一组需要遵循的步骤,以便我选择的任何LAF。
请阅读Modifying the Look and Feel上的Swing教程中的章节,以获得解释和工作示例。
https://stackoverflow.com/questions/6001919
复制相似问题