Java UIManager行为
我正在试验JavaUIManager和不同外观的使用。我很快发现,这不仅仅是在applet开始时设置外观和感觉,然后奇迹般地看到UI的变化。我发现,对于某些LAF,我会发现奇怪的不可预测的行为和失败。例如,当我将JLabel的字体设置为Arial,大小为8,字体为粗体时,生成的文本将是单破折号“-”,而不是使用Windows或Classic Windows LAF指定的文本。在其他情况下,如Mac LAF,JTrees停止工作(我在Windows平台上实现我的应用程序)。所以我想知道,在更改JavaLAF时是否需要遵循一组步骤,以便无论我选择了什么LAF,都可以确保Swing的其余部分具有可靠和可预测的行为?你是否只确定LAF的强大,其余的都是为了内心的勇敢Java UIManager行为,java,swing,uimanager,Java,Swing,Uimanager,我正在试验JavaUIManager和不同外观的使用。我很快发现,这不仅仅是在applet开始时设置外观和感觉,然后奇迹般地看到UI的变化。我发现,对于某些LAF,我会发现奇怪的不可预测的行为和失败。例如,当我将JLabel的字体设置为Arial,大小为8,字体为粗体时,生成的文本将是单破折号“-”,而不是使用Windows或Classic Windows LAF指定的文本。在其他情况下,如Mac LAF,JTrees停止工作(我在Windows平台上实现我的应用程序)。所以我想知道,在更改Ja
提前感谢您的回复。我不知道如何准确回答您的问题。我所能做的就是展示我如何使用不同的UI运行我的应用程序,请参见下文。该示例显示了我是如何安装来自的Look and Feeld之一的 至于代码中关于调用
SwingUtilities.updateComponentTreeUI(框架)的注释代码>我猜在应用程序已经运行的情况下,当您正在更改外观和感觉时,它是必需的
希望对你有帮助
例如,当我将JLabel的字体设置为Arial,大小为8,字体为粗体时,生成的文本将是一个单破折号“-”,而不是指定的文本
可能是因为您的代码没有使用布局管理器,并且在代码的某些地方使用了setBounds(…)或setPreferredSize()
所以我想知道,在更改JavaLAF时,是否需要遵循一组步骤,以便无论我选择什么LAF
阅读上Swing教程中的章节,以获取解释和工作示例。“有些人说下面的部分也应该调用,但即使没有它,它也对我有用,那么这是为什么?”当您在可见GUI上动态更改LAF时,会使用该方法。如果您在创建任何组件之前更改LAF,则无需担心,因为组件是使用当前LAF创建的。非常感谢@camickr,我怀疑这就是它的用途。
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();
}
});
}