![](/img/trans.png)
[英]Nimbus: java.lang.ClassCastException: javax.swing.plaf.nimbus.DerivedColor$UIResource cannot be cast to javax.swing.Painter
[英]ClassCastException: javax.swing.plaf.FontUIResource cannot be cast to javax.swing.InputMap
在java中運行swing應用程序,我在程序中遇到了這個異常。 值得注意的是,每次運行程序時都不會出現這種情況。
完整堆棧跟蹤:
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
導致異常的行(在我的源代碼中):
public static final WorkPanel WORK = new WorkPanel();
去吧
super(new WorkTable(AllWork.getElements(), true, true, true, true, true, true, true),
new WorkTable(AllWork.getElements(), true, true, true, true, true, true, true, true));
至
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)));
}
我的源代碼中的最后一段代碼是JScrollPane
的構造。
我不明白為什么拋出這個異常。
任何時候我看到這個:
在java中運行swing應用程序,我在程序中遇到了這個異常。 值得注意的是, 每次運行程序時都不會出現這種情況。
警鍾響了起來,我覺得“我正在正確處理Swing線程”嗎? 因為Swing線程不幸導致並不總是發生奇怪的錯誤並不罕見。
那么,你是否正確地處理Swing線程,首先在事件線程上啟動並顯示Swing GUI? 即
private static void createAndShowGui() {
// create and display my GUI here
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
順便說一下,你沒有使用Nimbus或其他外觀和感覺?
修正了錯誤。 發現我在EDT中同時做GUI內容。 構造函數花了太長時間才使用invokeLater()
,開始使用invokeAndWait()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.