JDK-6937538 : Nimbus: JInternalFrame() causes exception if user UI installed
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 6u10
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2010-03-23
  • Updated: 2012-03-22
  • Resolved: 2010-03-24
Related Reports
Duplicate :  
Description
code


                LookAndFeel[] auxLafs = UIManager.getAuxiliaryLookAndFeels();
                LookAndFeel lnf = new AuxiliaryLookAndFeel();
                try {
                    //removing auxiliary look and feels
                    if (auxLafs != null) {
                        for (int i=0; i<auxLafs.length; i++) {
                            UIManager.removeAuxiliaryLookAndFeel(auxLafs[i]);
                        }
                    }

                    UIManager.addAuxiliaryLookAndFeel(lnf);
                    new JInternalFrame();


causes exception if Nimbus LaF specified:

Exception in thread "main" java.lang.ClassCastException: javax.swing.plaf.multi.MultiPopupMenuUI cannot be cast to javax.swing.plaf.synth.SynthPopupMenuUI
	at javax.swing.plaf.synth.DefaultMenuLayout.invalidateLayout(DefaultMenuLayout.java:35)
	at javax.swing.BoxLayout.addLayoutComponent(BoxLayout.java:262)
	at java.awt.Container.addImpl(Container.java:1074)
	at java.awt.Container.add(Container.java:365)
	at javax.swing.JPopupMenu.add(JPopupMenu.java:264)
	at javax.swing.JPopupMenu.add(JPopupMenu.java:289)
	at javax.swing.plaf.synth.SynthInternalFrameTitlePane.addSystemMenuItems(SynthInternalFrameTitlePane.java:183)
	at javax.swing.plaf.synth.SynthInternalFrameTitlePane.assembleSystemMenu(SynthInternalFrameTitlePane.java:155)
	at javax.swing.plaf.basic.BasicInternalFrameTitlePane.installTitlePane(BasicInternalFrameTitlePane.java:106)
	at javax.swing.plaf.basic.BasicInternalFrameTitlePane.<init>(BasicInternalFrameTitlePane.java:93)
	at javax.swing.plaf.synth.SynthInternalFrameTitlePane.<init>(SynthInternalFrameTitlePane.java:46)
	at javax.swing.plaf.synth.SynthDesktopIconUI.installComponents(SynthDesktopIconUI.java:52)
	at javax.swing.plaf.basic.BasicDesktopIconUI.installUI(BasicDesktopIconUI.java:55)
	at javax.swing.plaf.multi.MultiDesktopIconUI.installUI(MultiDesktopIconUI.java:97)
	at javax.swing.JComponent.setUI(JComponent.java:662)
	at javax.swing.JInternalFrame$JDesktopIcon.setUI(JInternalFrame.java:2165)
	at javax.swing.JInternalFrame$JDesktopIcon.updateUI(JInternalFrame.java:2213)
	at javax.swing.JInternalFrame$JDesktopIcon.<init>(JInternalFrame.java:2145)
	at javax.swing.JInternalFrame.<init>(JInternalFrame.java:331)
	at javax.swing.JInternalFrame.<init>(JInternalFrame.java:250)
	at Test.main(Test.java:25)


test case is attached to bugster (quite big)