Java JInternalFrame不使用JFrame L&;Netbeans 7.1.2中的F

Java JInternalFrame不使用JFrame L&;Netbeans 7.1.2中的F,java,swing,look-and-feel,jinternalframe,nimbus,Java,Swing,Look And Feel,Jinternalframe,Nimbus,我正在用Netbeans创建一个MDI应用程序,一切都正常工作,外观设置为Nimbus 无论何时运行应用程序,JFrame及其工具栏都使用指定的L&F(Nimbus),但内部框架使用跨平台(金属)L&F,使应用程序看起来很破旧 我希望内部框架使用与JFrame相同的L&F。请问我该如何解决这个问题 我尝试调用JFrame.setdefaultlookandfeeldecorated(true)和SwingUtilities.updatecomponenttreeui(frame),但它们没有解决

我正在用Netbeans创建一个MDI应用程序,一切都正常工作,外观设置为Nimbus

无论何时运行应用程序,JFrame及其工具栏都使用指定的L&F(Nimbus),但内部框架使用跨平台(金属)L&F,使应用程序看起来很破旧

我希望内部框架使用与JFrame相同的L&F。请问我该如何解决这个问题

我尝试调用
JFrame.setdefaultlookandfeeldecorated(true)
SwingUtilities.updatecomponenttreeui(frame)
,但它们没有解决问题

每当我运行应用程序时,JFrame及其工具栏都会使用 指定L&F(Nimbus),但内部框架使用跨平台 (金属)L&F使应用程序看起来很破旧

  • 无法复制所描述的问题

  • 请阅读有关Oracle的教程


1) 为了更快地获得更好的帮助,请发布一个。2) “我试着调用..
SwingUtilities.updatecomponenttreeui(框架)
,但他们没有解决问题。”那不会编译。@我指的是JFrame.setDefaultLookAndFeelDecorated(true)和SwingUtilities.updatecomponenttreeui(框架)。代码可以编译,但不能解决问题。很高兴您注意到了第二点。现在请注意第1条@mrKorbel非常感谢,这与我的非常相似,Netbeans为您添加了外观代码,但没有添加JFrame.setDefaultLookAndFeelDecorated(true)和SwingUtilities.updateComponentTreeUi(frame)。我最初认为这可能是问题所在,但即使添加了它们,也没有解决问题。也许是Netbeans。LolI还尝试将L&F更改为LiquidLookAndFeel,JFrame的L&F更改得很好,但内部框架仍然粘在金属L&F上。@Jide Kolade只能这样做(正确且正确的方式),以更改JFrames的描述(注意来自于本机操作系统中应用的当前主题)@mrKorbel only Substance?真正地那感觉不对。我会试试看,希望它能解决问题。Thanx.@Jide Kolade资源是从本机操作系统(装饰、配色方案、字体)注入的,其内容是纯Java(来自RootPane、ContentPane),
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;

public class TestInternalFrame {

    public TestInternalFrame() {
        final JInternalFrame internal = new JInternalFrame("test");
        final JInternalFrame hidden = new JInternalFrame("test");
        hidden.setBounds(1000, 1000, 1, 1);
        hidden.setVisible(true);
        internal.setVisible(true);
        internal.setBounds(0, 0, 100, 100);
        JDesktopPane pane = new JDesktopPane();
        pane.add(internal);
        pane.add(hidden);
        pane.setPreferredSize(new Dimension(10000, 10000));
        final JFrame frame = new JFrame("Test");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(new JScrollPane(pane,
                JScrollPane.VERTICAL_SCROLLBAR_NEVER,
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
        /*frame.getContentPane().add(new JButton(new AbstractAction("Show blocked dialog") {

        private static final long serialVersionUID = 1L;

        @Override
        public void actionPerformed(ActionEvent e) {
        EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
        JOptionPane.showInternalMessageDialog(hidden, "Hi 2!");
        }
        });
        JOptionPane.showInternalMessageDialog(internal, "Hi 1!");
        }
        }), BorderLayout.PAGE_END);*/
        frame.setPreferredSize(new Dimension(400, 300));
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                System.out.println(info.getName());
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (UnsupportedLookAndFeelException e) {
            // handle exception
        } catch (ClassNotFoundException e) {
            // handle exception
        } catch (InstantiationException e) {
            // handle exception
        } catch (IllegalAccessException e) {
            // handle exception
        }

        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                TestInternalFrame tif = new TestInternalFrame();
            }
        });
    }
}