如何检查JFrame是否已打开?

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);   
}

2
我发誓我今天早些时候看到了同样的问题。你试过搜索吗? - Tdorno
2个回答

7

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

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

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);
}

但基于提供的信息,这就是我能说的全部。如果你需要更具体的帮助,那么你需要提供更多的信息。


感谢您给了我JDialog的想法。 - Sarang

1
如果使用JFrames,可以简单地像这样完成:
if (Frame1.component != null) {
   Frame1 is opened
} else if (Frame2.component == null) {
   Frame2 is closed
}

组件 ex.JTextField、JComboBox 等。

1
获取“错误:Container中的组件具有私有访问权限” - Akhil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接