如何在Java GUI编程中实现Windows原生外观?

49

我刚接触Java编程,想知道是否可以在Java GUI应用程序中获得Windows本地外观。显然,Swing无法实现。

3个回答

91

如果您使用此代码,则必须执行更新,如Kumar在下面的答案中所示: SwingUtilities.updateComponentTreeUI(frmae); updateComponentTreeUI(frame); - SüniÚr
2
@Csanesz 如果您在应用程序启动后更改了 L&F,当 UI 已经可见时,则需要使用 updateComponentTreeUI,否则不需要。所提到的教程讨论了各种选项。 - tenorsax
不要忘记用try/catch(已检查异常)包围它。 - Devid

16

尝试这个...

语法如下:

UIManager.setLookAndFeel(PLAF); (可插入外观)

所以,你必须包含以下三行。

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

SwingUtilities.updateComponentTreeUI(frame);

updateComponentTreeUI(frame);

SwingUtilities.updateComponentTreeUI(frame) 用于在更改后刷新框架。


3
a) 不建议硬编码类名。 b) 第三行不需要(在第二行已经处理了 :-))。 - kleopatra
9
如果在意识到任何图形用户界面组件之前运行它,则仅需要第一行。 - Jacob Raihle

-4

尝试这段代码:

javax.swing.UIManager.setLookAndFeel("Windows")

19
错误 - 您至少需要完全限定的LAF类名。 - kleopatra
@RonE 哎呀,我差点晕过去了,赶紧尝试了一下(你可能也这么做了吧;-))它抛出了 java.lang.ClassNotFoundException: Windows,就像文档中所述,那么好奇的是:你认为为什么会这样? - kleopatra
@kleopatra 对不起,我的错误。我习惯于使用带有参数“lookAndFeelString”的辅助方法来选择L&F。for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if (lookAndFeelString.equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName());}} 我会删除我的其他评论,以免误导。 - Ron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接