問題タブ [invokelater]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1503 参照

java - サブスタンス L&F が機能しない

Java アプリケーションでSubstance L&F ライブラリを使用したいので、.jar ファイルをダウンロードしてプロジェクトのクラスパスに追加しました。main()次に、アプリケーションの関数で L&F を次のように設定します。

これは、JFrame が作成される前に行われます。ただし、例外がスローされなくても何も起こらず、GUI はデフォルトの Swing L&F でレンダリングされます。

私がここで見逃しているアイデアはありますか?

編集
呼び出し の代わりに、代わりSubstanceLookAndFeel.setSkin(skin);に試しましUIManager.setLookAndFeel(skin);た。これはまだ機能しませんが、少なくとも今は例外が発生します:

org.pushingpixels.substance.api.UiThreadingViolationException:
イベント ディスパッチ スレッドで状態追跡を行う必要があります

これを経由で呼び出すことで解決しませんinvokeAndWait()か?

EDIT-2
わかりました。問題は別のものでした。JTableL&F の設定時ではなく、の作成時に例外がスローされました。を介してコンストラクターを呼び出すことでJFrame(基本的にアプリケーション全体を実行します) 、L&F が正しくレンダリングされるようになりましたEventQueue.invokeLater()。しかし、私は以前にそれをしたことがありません.そのようにするのは「保存」(Java用語で有効)ですか?

0 投票する
1 に答える
30 参照

polymorphism - ストレンジ ポリモーフィズムの必要性

SwingUtilities.invokeLater 内で動作する eventOccurred を持つクラスがあります (EDT に参加するため)。このクラスは延長されます。このクラスを拡張して、eventOcurred の作業を invokeLater 内に配置するように強制したいのですが、その方法がわかりません。eventOccurred をオーバーライドできるようにする必要があるため、基本クラスの eventOccurred に final を設定しても機能しません。