简体   繁体   English

ClassCastException:javax.swing.plaf.FontUIResource无法强制转换为javax.swing.InputMap

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

Running a swing application in java, and I got this exception in my program. 在java中运行swing应用程序,我在程序中遇到了这个异常。 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 . 我的源代码中的最后一段代码是JScrollPane的构造。

I don't understand why this exception is thrown. 我不明白为什么抛出这个异常。

Any time I see this: 任何时候我看到这个:

Running a swing application in java, and I got this exception in my program. 在java中运行swing应用程序,我在程序中遇到了这个异常。 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"? 警钟响了起来,我觉得“我正在正确处理Swing线程”吗? Because it is not uncommon for Swing thread mishaps to cause strange errors that don't always occur. 因为Swing线程不幸导致并不总是发生奇怪的错误并不罕见。

So, are you handing Swing threading correctly, by first of all initiating and displaying the Swing GUI on the event thread? 那么,你是否正确地处理Swing线程,首先在事件线程上启动并显示Swing GUI? ie,

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? 顺便说一下,你没有使用Nimbus或其他外观和感觉?

Fixed the error. 修正了错误。 Found out I was doing GUI stuff simultaneously in the EDT. 发现我在EDT中同时做GUI内容。 Constructors took too long to use invokeLater() , started using invokeAndWait() . 构造函数花了太长时间才使用invokeLater() ,开始使用invokeAndWait()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Nimbus:java.lang.ClassCastException:javax.swing.plaf.nimbus.DerivedColor $ UIResource无法强制转换为javax.swing.Painter - Nimbus: java.lang.ClassCastException: javax.swing.plaf.nimbus.DerivedColor$UIResource cannot be cast to javax.swing.Painter Java异常:java.lang.ClassCastException:javax.swing.Timer无法转换为javax.swing.JButton - Java exception: java.lang.ClassCastException: javax.swing.Timer cannot be cast to javax.swing.JButton javax.swing.JComboBox无法强制转换为javax.swing.ComboBoxModel - javax.swing.JComboBox cannot be cast to javax.swing.ComboBoxModel javax.swing.JPanel无法转换为javax.swing.JLayeredPane - javax.swing.JPanel cannot be cast to javax.swing.JLayeredPane 如何解决此错误“java.lang.ClassCastException: javax.swing.JList$3 无法转换为 javax.swing.DefaultListModel” - How to resolve this error “java.lang.ClassCastException: javax.swing.JList$3 cannot be cast to javax.swing.DefaultListModel” JButton无法转换为javax.swing.JComboBox - JButton cannot be cast to javax.swing.JComboBox [B 不能转换为 javax.swing.ImageIcon - [B cannot be cast to javax.swing.ImageIcon ClassCastException:javax.swing.JButton - ClassCastException: javax.swing.JButton javax.swing.plaf.nimbus.ImageCache中ReentrantReadWriteLock的使用 - Usage of ReentrantReadWriteLock in javax.swing.plaf.nimbus.ImageCache javax.swing.plaf.synth.SynthContext.getPainter上的NullPointerException - NullPointerException at javax.swing.plaf.synth.SynthContext.getPainter
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM