gpt4 book ai didi

java - 为什么我的 Java 程序同时使用 aqua LAF 和 System LAF 的元素?

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:44 26 4
gpt4 key购买 nike

我有一个用 Java 编写的应用程序。当我使用跨平台 LAF(金属)从 eclipse 运行它时UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

它显示 JButtons 和其他一些金属组件,JSpinners 使用 Aqua,JComboBoxes 使用 Aqua,并且无法正常工作。他们实际上抛出:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.apple.laf.AquaMenuPainter.paintSelectedMenuItemBackground(AquaMenuPainter.java:153)
at com.apple.laf.AquaComboBoxRendererInternal.paintComponent(AquaComboBoxRenderer.java:151)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.CellRendererPane.paintComponent(CellRendererPane.java:151)
at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.java:227)
at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:317)
at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:240)

该应用程序与 Aqua 配合得很好。当我使用 JWrapper 将其导出为 native .app 并使用 Mavericks 而不是 Yosemite 在另一台 Mac 上运行时,问题仍然存在。

我试图让我的程序与 LAF 强制使用的任何东西(水色、金属或任何其他)一起工作,所以这是一个问题。

此外,这似乎与 this 是同一问题但建议的解决方案不起作用。

最佳答案

好吧,在我决定发布这个问题之前,我已经思考这个问题一个多小时了。几秒钟后我就找到了答案。

private static JLabel... = new JLabel("example");
private static JButton...= new JButton("example");
//Things up here will display as aqua


public static void main(String[] args){

try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JLabel... =new JLabel("example");
//things down here will display as metal

这是一个愚蠢的错误。

关于java - 为什么我的 Java 程序同时使用 aqua LAF 和 System LAF 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120552/

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