如何访问同一应用程序的不同线程中的所有JFrame

San*_*oel 2 java reflection swing jframe

如何JFrame 在Java应用程序的不同事件派发线程中访问不同的执行请通过此处提出的SSCCE 在这种情况下,JVM的新实例或反射是否有帮助

最后,正如我所提到的,如果将以下代码添加到第一个类中

Frame[] f2 = JFrame.getFrames();

for(Frame fx: f2){
    System.out.println(fx.getTitle());
    fx.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent we){
}
Run Code Online (Sandbox Code Playgroud)

如果在SSCCE中按顺序添加到第二个类,则只返回一个帧,返回两个帧,如果添加到第三个类,则返回所有帧.这是由于事件调度线程导致此行为背后的原因导致的问题.如何从主框架,即MyApp访问所有框架.

为什么JFrame.getFrames(); 返回awt帧说,例如,如果我想更改我的应用程序中所有JFrame的默认关闭操作,gerFrames返回awt帧,如果JFrame中的caset产生异常.

线程"main"中的异常java.lang.ClassCastException:[Ljava.awt.Frame; 无法转换为[Ljavax.swing.JFrame; at myApp.MYApp.main(MYApp.java:48)

mKo*_*bel 7

代码行

Window[] allWindows = Window.getWindows();
Run Code Online (Sandbox Code Playgroud)

Top-Level Containers从当前返回所有数组JVM

  • J/Frame

  • J/Dialog(JOptionPane)

  • J/Window

必须测试是否

if (allWindows[i] instanceof JFrame) {
Run Code Online (Sandbox Code Playgroud)