ClassCastException: javax.swing.plaf.FontUIResource cannot be cast to javax.swing.InputMap

components, java, swing

Solution

Any time I see this:

Running a swing application in java, and I got this exception in my program. It's worth noting that this does not show up every time I run the program.

Alarm bells go off in my head, and I think "am I handling Swing threading correctly"? Because it is not uncommon for Swing thread mishaps to cause strange errors that don't always occur.

So, are you handing Swing threading correctly, by first of all initiating and displaying the Swing GUI on the event thread? i.e.,

private static void createAndShowGui() {

  // create and display my GUI here

}

public static void main(String[] args) {
  SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        createAndShowGui();
     }
  });
}

By the way, you're not using Nimbus or another look and feel?

Problem

Running a swing application in java, and I got this exception in my program. It's worth noting that this does not show up every time I run the program. Full stack trace : ``` Exception in thread "main" java.lang.ExceptionInInitializerError at org.backend.utils.importing.Loading$1.run(Loading.java:54) at org.backend.utils.importing.Loading.loadEverything(Loading.java:61) at org.main.BishopCarrollSchoolTracker.main(BishopCarrollSchoolTracker.java:70) Caused by: java.lang.ClassCastException: javax.swing.plaf.FontUIResource cannot be cast to javax.swing.InputMap at javax.swing.plaf.basic.BasicButtonListener.getInputMap(BasicButtonListener.java:102) at javax.swing.plaf.basic.BasicButtonListener.installKeyboardActions(BasicButtonListener.java:78) at javax.swing.plaf.basic.BasicButtonUI.installKeyboardActions(BasicButtonUI.java:121) at javax.swing.plaf.basic.BasicButtonUI.installUI(BasicButtonUI.java:73) at javax.swing.JComponent.setUI(JComponent.java:662) at javax.swing.AbstractButton.setUI(AbstractButton.java:1782) at javax.swing.plaf.synth.SynthArrowButton.updateUI(SynthArrowButton.java:34) at javax.swing.AbstractButton.init(AbstractButton.java:2149) at javax.swing.JButton.<init>(JButton.java:118) at javax.swing.JButton.<init>(JButton.java:73) at javax.swing.plaf.synth.SynthArrowButton.<init>(SynthArrowButton.java:23) at javax.swing.plaf.synth.SynthScrollBarUI$2.<init>(SynthScrollBarUI.java:325) at javax.swing.plaf.synth.SynthScrollBarUI.createIncreaseButton(SynthScrollBarUI.java:325) at javax.swing.plaf.basic.BasicScrollBarUI.installComponents(BasicScrollBarUI.java:225) at javax.swing.plaf.basic.BasicScrollBarUI.installUI(BasicScrollBarUI.java:147) at javax.swing.JComponent.setUI(JComponent.java:662) at javax.swing.JScrollBar.setUI(JScrollBar.java:190) at javax.swing.JScrollBar.updateUI(JScrollBar.java:210) at javax.swing.JScrollBar.<init>(JScrollBar.java:144) at javax.swing.JScrollBar.<init>(JScrollBar.java:159) at javax.swing.JScrollPane$ScrollBar.<init>(JScrollPane.java:698) at javax.swing.JScrollPane.createHorizontalScrollBar(JScrollPane.java:794) at javax.swing.JScrollPane.<init>(JScrollPane.java:282) at javax.swing.JScrollPane.<init>(JScrollPane.java:305) at org.gui.base.generic.panels.ListTablePanel.<init>(ListTablePanel.java:44) at org.gui.base.main.internal.WorkPanel.<init>(WorkPanel.java:28) at org.gui.base.main.internal.InternalPanel.<clinit>(InternalPanel.java:38) ... 3 more ``` Lines causing exception (In my source code) : ``` public static final WorkPanel WORK = new WorkPanel(); ``` Goes to ``` super(new WorkTable(AllWork.getElements(), true, true, true, true, true, true, true), new WorkTable(AllWork.getElements(), true, true, true, true, true, true, true, true)); ``` To ``` public ListTablePanel(RefreshableTable m, RefreshableTable t) { this.main = m; this.totals = t; setLayout(LayoutFactory.createLayout()); JScrollPane pane = new JScrollPane(main); main.setAutoCreateRowSorter(false); totals.setFont(totals.getFont().deriveFont(Font.BOLD)); totals.setEnabled(false); pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); add(pane, LayoutFactory.newFactory().setFill(GridBagConstraints.BOTH). setY(0).setWeightX(1).setWeightY(1)); add(totals, LayoutFactory.newFactory().setFill(GridBagConstraints.BOTH). setY(1).setWeightX(1).setInsets(new Insets(0, 2, 0, 17))); } ``` The last piece of code in my source code is the construction of `JScrollPane`. I don't understand why this exception is thrown.

Original source