Pregunta

My application was working properly until I have changed look and feel to Nimbus. I have recieved below errors.

It says something is wrong with my JTable. I have checked it, but there is nothing wrong with JTable.

Edit

I used threads to create multiply JPanels parallelly, I think this was causing the error. Once I removed threads it started working normally. But due to removing threads my application takes a bit longer on startup. How can I overcome this situation (using thread and Nimbus Look and feel)?

Exception in thread "Thread-3" java.lang.ClassCastException: javax.swing.plaf.InputMapUIResource cannot be cast to java.awt.Font
at javax.swing.plaf.nimbus.NimbusStyle.getFontForState(NimbusStyle.java:573)
at javax.swing.plaf.synth.SynthStyle.installDefaults(SynthStyle.java:933)
at javax.swing.plaf.nimbus.NimbusStyle.installDefaults(NimbusStyle.java:231)
at javax.swing.plaf.synth.SynthStyle.installDefaults(SynthStyle.java:916)
at javax.swing.plaf.synth.SynthLookAndFeel.updateStyle(SynthLookAndFeel.java:265)
at javax.swing.plaf.synth.SynthButtonUI.updateStyle(SynthButtonUI.java:79)
at javax.swing.plaf.synth.SynthButtonUI.installDefaults(SynthButtonUI.java:62)
at javax.swing.plaf.basic.BasicButtonUI.installUI(BasicButtonUI.java:88)
at javax.swing.JComponent.setUI(JComponent.java:664)
at javax.swing.AbstractButton.setUI(AbstractButton.java:1807)
at javax.swing.JCheckBox.updateUI(JCheckBox.java:228)
at javax.swing.AbstractButton.init(AbstractButton.java:2172)
at javax.swing.JToggleButton.<init>(JToggleButton.java:176)
at javax.swing.JCheckBox.<init>(JCheckBox.java:174)
at javax.swing.JCheckBox.<init>(JCheckBox.java:96)
at javax.swing.plaf.synth.SynthTableUI$SynthBooleanTableCellRenderer.<init> 

      (SynthTableUI.java:713)
at javax.swing.plaf.synth.SynthTableUI.installDefaults(SynthTableUI.java:116)
at javax.swing.plaf.basic.BasicTableUI.installUI(BasicTableUI.java:1388)
at javax.swing.JComponent.setUI(JComponent.java:664)
at javax.swing.JTable.setUI(JTable.java:3603)
at javax.swing.JTable.updateUI(JTable.java:3645)
at javax.swing.JTable.<init>(JTable.java:637)
at javax.swing.JTable.<init>(JTable.java:562)
at output.Table.initComponents(Table.java:22)
at output.Table.<init>(Table.java:17)
at output.DataTables$3.run(DataTables.java:139)

 Exception in thread "Thread-6" java.lang.ClassCastException:   
 javax.swing.plaf.FontUIResource cannot be cast to java.lang.Number
at javax.swing.AbstractButton.setUIProperty(AbstractButton.java:2240)
at javax.swing.LookAndFeel.installProperty(LookAndFeel.java:280)
at javax.swing.plaf.synth.SynthButtonUI.updateStyle(SynthButtonUI.java:95)
at javax.swing.plaf.synth.SynthButtonUI.installDefaults(SynthButtonUI.java:62)
at javax.swing.plaf.synth.SynthArrowButton$SynthArrowButtonUI.installDefaults

  (SynthArrowButton.java:68)
at javax.swing.plaf.basic.BasicButtonUI.installUI(BasicButtonUI.java:88)
at javax.swing.JComponent.setUI(JComponent.java:664)
at javax.swing.AbstractButton.setUI(AbstractButton.java:1807)
at javax.swing.plaf.synth.SynthArrowButton.updateUI(SynthArrowButton.java:51)
at javax.swing.AbstractButton.init(AbstractButton.java:2172)
at javax.swing.JButton.<init>(JButton.java:136)
at javax.swing.JButton.<init>(JButton.java:90)
at javax.swing.plaf.synth.SynthArrowButton.<init>(SynthArrowButton.java:40)
at javax.swing.plaf.synth.SynthScrollBarUI$1.<init>(SynthScrollBarUI.java:378)
at javax.swing.plaf.synth.SynthScrollBarUI.createDecreaseButton 

(SynthScrollBarUI.java:378)
at javax.swing.plaf.basic.BasicScrollBarUI.installComponents

(BasicScrollBarUI.java:248)
at javax.swing.plaf.basic.BasicScrollBarUI.installUI(BasicScrollBarUI.java:169)
at javax.swing.JComponent.setUI(JComponent.java:664)
at javax.swing.JScrollBar.setUI(JScrollBar.java:207)
at javax.swing.JScrollBar.updateUI(JScrollBar.java:227)
at javax.swing.JScrollBar.<init>(JScrollBar.java:161)
at javax.swing.JScrollBar.<init>(JScrollBar.java:176)
at javax.swing.JScrollPane$ScrollBar.<init>(JScrollPane.java:718)
at javax.swing.JScrollPane.createHorizontalScrollBar(JScrollPane.java:814)
at javax.swing.JScrollPane.<init>(JScrollPane.java:300)
at javax.swing.JScrollPane.<init>(JScrollPane.java:323)
at output.Table.initComponents(Table.java:27)
at output.Table.<init>(Table.java:17)
at output.DataTables$6.run(DataTables.java:163)

Exception in thread "Thread-5" java.lang.ClassCastException: java.lang.Boolean cannot 

be cast to java.awt.Color

at javax.swing.plaf.nimbus.NimbusStyle.getColorForState(NimbusStyle.java:558)
at javax.swing.plaf.synth.SynthStyle.installDefaults(SynthStyle.java:942)
at javax.swing.plaf.nimbus.NimbusStyle.installDefaults(NimbusStyle.java:231)
at javax.swing.plaf.synth.SynthStyle.installDefaults(SynthStyle.java:916)
at javax.swing.plaf.synth.SynthLookAndFeel.updateStyle(SynthLookAndFeel.java:265)
at javax.swing.plaf.synth.SynthScrollBarUI.updateStyle(SynthScrollBarUI.java:80)
at javax.swing.plaf.synth.SynthScrollBarUI.installDefaults   

 (SynthScrollBarUI.java:67)
at javax.swing.plaf.basic.BasicScrollBarUI.installUI(BasicScrollBarUI.java:168)
at javax.swing.JComponent.setUI(JComponent.java:664)
at javax.swing.JScrollBar.setUI(JScrollBar.java:207)
at javax.swing.JScrollBar.updateUI(JScrollBar.java:227)
at javax.swing.JScrollBar.<init>(JScrollBar.java:161)
at javax.swing.JScrollBar.<init>(JScrollBar.java:176)
at javax.swing.JScrollPane$ScrollBar.<init>(JScrollPane.java:718)
at javax.swing.JScrollPane.createHorizontalScrollBar(JScrollPane.java:814)
at javax.swing.JScrollPane.<init>(JScrollPane.java:300)
at javax.swing.JScrollPane.<init>(JScrollPane.java:323)
at output.Table.initComponents(Table.java:27)
at output.Table.<init>(Table.java:17)
at output.DataTables$5.run(DataTables.java:155)
¿Fue útil?

Solución

(This was a comment but was requested to be provided as an answer)

You are saying this exception happens when you create and use Swing objects over multiple threads, but not when you use a single thread? This sounds like a common Swing concurrency issue that arises because Swing isn't thread safe. You have to do everything Swing related on the EDT.

On the topic of how your panel creation is taking long, maybe you can parallelize the creation of the non-Swing objects, and then at the end when you have a list of them or whatever you have, you can create the panels real quick on the EDT (I'm assuming the construction of the non Swing objects are what's taking long to execute).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top