2

如何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){
}

如果在SSCCE中按顺序添加到第二类,则仅返回单个帧,返回两个帧,如果添加到第三类,则返回所有帧。这是由于事件调度线程造成的问题吗?这种行为背后的原因是什么。如何从主框架(即 MyApp)访问所有框架。

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

线程“main”中的异常 java.lang.ClassCastException: [Ljava.awt.Frame; 不能转换为 [Ljavax.swing.JFrame; 在 myApp.MYApp.main(MYApp.java:48)

4

1 回答 1

7

代码行

Window[] allWindows = Window.getWindows();

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

  • J/Frame

  • J/Dialog(JOptionPane)

  • J/Window

必须测试是否

if (allWindows[i] instanceof JFrame) {
于 2012-07-20T06:52:55.540 回答