問題タブ [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.
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
わかりました。問題は別のものでした。JTable
L&F の設定時ではなく、の作成時に例外がスローされました。を介してコンストラクターを呼び出すことでJFrame
(基本的にアプリケーション全体を実行します) 、L&F が正しくレンダリングされるようになりましたEventQueue.invokeLater()
。しかし、私は以前にそれをしたことがありません.そのようにするのは「保存」(Java用語で有効)ですか?
polymorphism - ストレンジ ポリモーフィズムの必要性
SwingUtilities.invokeLater 内で動作する eventOccurred を持つクラスがあります (EDT に参加するため)。このクラスは延長されます。このクラスを拡張して、eventOcurred の作業を invokeLater 内に配置するように強制したいのですが、その方法がわかりません。eventOccurred をオーバーライドできるようにする必要があるため、基本クラスの eventOccurred に final を設定しても機能しません。