Javaアプリケーションのさまざまなイベントディスパッチスレッドでさまざまな実行にアクセスする方法JFrame
ここで提示されたSSCCEを確認してください
この場合、JVMの新しいインスタンスまたはリフレクションが役立ちます
最後に、私が述べたように、次のコードが最初のクラスに追加された場合
Frame[] f2 = JFrame.getFrames();
for(Frame fx: f2){
System.out.println(fx.getTitle());
fx.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
}
SSCCEで2番目のクラスに順番に追加された場合は1つのフレームのみが返され、3番目のクラスに追加された場合はすべてのフレームが返されます。これは、イベントディスパッチスレッドによる問題ですか。この動作の背後にある理由は何ですか。メインフレーム、つまりMyAppからすべてのフレームにアクセスする方法。
なぜJFrame.getFrames(); awt Framesを返します。たとえば、アプリケーション内のすべてのJFrameのデフォルトのクローズ操作を変更したい場合、gerFramesはawtフレームを返します。これは、JFrameのcasetが例外を生成する場合に発生します。
スレッド"main"の例外java.lang.ClassCastException:[Ljava.awt.Frame; [Ljavax.swing.JFrame;にキャストできません。myApp.MYApp.main(MYApp.java:48)で