有没有一种特定的方法可以改变Swing应用程序的外观和感觉,而不需要在用户更改LAF时每次重新启动应用程序?
我正在寻找一种解决方案,可以从配置对话框中选择LAF,并在应用后直接更改其样式,而无需回退告诉用户重新启动应用程序。
目前,我会在启动之前记住选定的LAF并将其设置为任何窗口打开之前。
有没有一种特定的方法可以改变Swing应用程序的外观和感觉,而不需要在用户更改LAF时每次重新启动应用程序?
我正在寻找一种解决方案,可以从配置对话框中选择LAF,并在应用后直接更改其样式,而无需回退告诉用户重新启动应用程序。
目前,我会在启动之前记住选定的LAF并将其设置为任何窗口打开之前。
来自Java教程:
首先需要通过调用UIManager.setLookAndFeel
来设置新的外观和感觉:
UIManager.setLookAndFeel(lnfName);
接下来,为了使现有组件反映出新的外观和感觉,需要在每个顶层容器(对话框、框架等)上调用SwingUtilities.updateComponentTreeUI
方法。您可能还希望调整每个顶层容器的大小以适应其包含组件大小的变化:
SwingUtilities.updateComponentTreeUI(frame); // update components
frame.pack(); // adapt container size if required
UIResource
(因为它无法与某些类和基元一起使用),那么 PL&F 如何准确地检测应用程序代码是否对组件属性感兴趣?)。 - Tom Hawtin - tacklineupdateUI()
方法中重置。但通常情况下它应该可以工作。您可以在IntelliJ IDEA中更改L&F而无需重新启动,我不会说它是一个小应用程序。 - Denis Tulskiy