-1

私は私のswingアプリケーションにSubstanceテーマを追加して実行しようとしましたが、うまくいきました. しかし、実行中にこの例外が発生し続けます。誰かがそれを修正する方法を教えてもらえますか?

例外................................................. ...................................................

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at org.jvnet.substance.SubstanceTableUI$TableStateListener$2.run(SubstanceTableUI.java:1951)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

コード................................................. ...................................................

   try {
        LookAndFeel look = new SubstanceDefaultLookAndFeel();
        UIManager.setLookAndFeel(look);
        SubstanceDefaultLookAndFeel.setCurrentTheme(new SubstanceBottleGreenTheme());
        SubstanceDefaultLookAndFeel.setCurrentWatermark(new SubstanceNoneWatermark());
        SubstanceDefaultLookAndFeel.setCurrentGradientPainter(new SimplisticSoftBorderReverseGradientPainter());
        new Login().setVisible(true);
   } catch (Exception e) {
        e.printStackTrace();
   }
4

1 に答える 1

1

イベント ディスパッチ スレッドで GUI を明示的に作成していることを確認してください。これを行わなかったときに、いくつかのルック アンド フィールでまさにこの問題に遭遇しました。これを行うには、次の方法で EDT のスタートアップ コードをキューに入れます。

SwingUtilities.invokeLater(new Runnable() {
  public void run() {
    // start your GUI here
  }
});

つまり、

SwingUtilities.invokeLater(new Runnable() {
  public void run() {
    try {
        LookAndFeel look = new SubstanceDefaultLookAndFeel();
        UIManager.setLookAndFeel(look);
        SubstanceDefaultLookAndFeel.setCurrentTheme(new SubstanceBottleGreenTheme());
        SubstanceDefaultLookAndFeel.setCurrentWatermark(new SubstanceNoneWatermark());
        SubstanceDefaultLookAndFeel.setCurrentGradientPainter(
           new SimplisticSoftBorderReverseGradientPainter());
        new Login().setVisible(true);
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

編集、mKorbel は正しいです。ルック アンド フィールの変更は EDT で行う必要があります。これを反映するようにコードが変更されました。誤報で申し訳ありません。

于 2013-12-15T03:47:58.083 に答える