如何检查jframe是否打开?

问题描述 投票:0回答:3

我下面的代码创建一个新数组并将其发送到聊天(jFrame)。

String info1[]=new String[3];
 // username , userid , userid2 are variables
 info1[0]=username4;
 info1[1]=""+userid;
 info1[2]=""+userid2;

 chat.main(info1);

但是我需要修改此代码以使其工作,如果聊天 jframe 打开, 然后不要打开新的 jFrame 。而是在聊天 jframe 中打开一个新选项卡。聊天框的代码是:

private void formWindowActivated(java.awt.event.WindowEvent evt) {       
  JScrollPane panel2 = new JScrollPane();
  JTextArea ta=new JTextArea("");
  ta.setColumns(30);
  ta.setRows(19);
  panel2.setViewportView(ta);
  jTabbedPane1.add("Hello", panel2);   
}
java swing jframe jdialog jtabbedpane
3个回答
7
投票

我想知道如果窗口依赖于另一个窗口,您是否不应该使用 JDialogs 而不是 JFrames。

一个解决方案是使用类字段来保存对窗口(JFrame 或 JDialog)的引用,并检查它是否为空或可见,如果是,则延迟创建/打开窗口,

public void newChat(User user) {
  if (chatWindow == null) {
    // create chatWindow in a lazy fashion
    chatWindow = new JDialog(myMainFrame, "Chat", /* modality type */);
    // ...  set up the chat window dialog
  }

  chatWindow.setVisible(true);
  addTabWithUser(user);
}

但这就是我根据所提供的信息所能说的。如果您需要更具体的帮助,那么您将需要提供更多信息。


2
投票

如果使用 JFrames,可以简单地这样做:

if (Frame1.component != null) {
   Frame1 is opened
} else if (Frame2.component == null) {
   Frame2 is closed
}

组件例如JTextField、JComboBox等


0
投票

这是旧的,但我想分享我如何处理这种要求:

// other frame
public class otherframe extends JFrame {
    public static JFrame otherframe;
    ....
    
    //constructor method
    public otherframe() {
        ...
   }
}

// my app or frame
public class myFrame extends JFrame {
    ....

    //constructor method
    public myFrame() {
        ...
    }

    public static void main(String args[]) {
        ....
        if (otherframe== null) {
            otherframe = new otherframe();
        } else {
            otherframe.setVisible();
            otherframe.toFront();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.