Java 嵌套类的UIManager.setLookAndFeel

Java 嵌套类的UIManager.setLookAndFeel,java,swing,Java,Swing,是否可以一次性设置外观并将其级联到所有嵌套类 在下面的示例中,我在类测试中设置了外观,但是我添加到嵌套在测试类中的MainPanel类中的JFileChooser不会调整其外观,除非我在该类中再次设置它 这就是我创建的每个类都需要做的事情吗?或者有没有一种方法可以让我在所有课程中都有相同的外观和感觉 导入java.awt.Dimension; 导入javax.swing.JFileChooser; 导入javax.swing.JFrame; 导入javax.swing.JPanel; 导入jav

是否可以一次性设置外观并将其级联到所有嵌套类

在下面的示例中,我在类测试中设置了外观,但是我添加到嵌套在测试类中的MainPanel类中的JFileChooser不会调整其外观,除非我在该类中再次设置它

这就是我创建的每个类都需要做的事情吗?或者有没有一种方法可以让我在所有课程中都有相同的外观和感觉

导入java.awt.Dimension; 导入javax.swing.JFileChooser; 导入javax.swing.JFrame; 导入javax.swing.JPanel; 导入javax.swing.UIManager; 导入javax.swing.UnsupportedLookAndFeelException; /** *类来演示UIManager.setLookAndFeel问题。 */ 公开课考试{ /** *主程序。 *@param args */ 公共静态无效字符串[]args{ javax.swing.SwingUtilities.invokelaterNewRunnable{ 公开募捐{ 新试验; } }; } /** *构造器。 */ 公开考试{ 试一试{ UIManager.setLookAndFeelUIManager.getCrossPlatformLookAndFeelClassName; }捕获类NotFoundException |实例化Exception |非法访问Exception |不受支持的LookandFeelException e{ e、 打印跟踪; } createGUI; } /** *设置JFrame并添加主JPanel。 */ 公共用户界面{ JFrame=新的JFrameTest; frame.addnew主面板800、600; frame.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE; frame.setVisibletrue; frame.pack; frame.setLocationRelativeTonull; } /** *为将容纳所有其他组件的主面板初始化。 */ 类主面板扩展了JPanel{ 私有最终整数宽度; 私人最终整数高度; /** *序列化/保存。 */ 私有静态最终长SerialVersionId=-3727866499459986351L; /** *构造器。 */ 公共主面板内部w,内部h{ 这个宽度=w; 这个高度=h; //问题选择器没有我的操作系统的外观 //除非我在这个构造函数中设置了外观 JFileChooser chooser=新的JFileChooser; 这个.addchooser; } /** * */ 公共维度getPreferredSize{ 返回新尺寸宽度、高度; } } }
问题出在这一行:

 UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
您看到的外观和感觉是跨平台的。这是Java的原版——yikes

尝试将其更改为:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

我确信它会被更改。

我实际上是在Windows上运行的-我猜它没有级联到我的组件的原因是因为MainPanel是一个独立的类,它扩展了JPanel,而不仅仅是另一个JPanel对象。@sleepToken我错了。我刚注意到。我现在正在编辑我的问题。干杯-我对Eclipse auto complete的粗心大意。有趣的是,我用的是getSystem。。。在我的嵌套类中,但不是我的主类中