Java 如何检查jframe是否已打开?

Java 如何检查jframe是否已打开?,java,swing,jframe,jdialog,jtabbedpane,Java,Swing,Jframe,Jdialog,Jtabbedpane,下面的代码创建一个新数组并将其发送到chat(jFrame) 但是我需要修改这段代码,使其能够工作,如果聊天框架被打开, 然后不要打开一个新的jFrame,而是在聊天jFrame中打开一个新标签。聊天框的代码为: private void formWindowActivated(java.awt.event.WindowEvent evt) { JScrollPane panel2 = new JScrollPane(); JTextArea ta=new JTextAre

下面的代码创建一个新数组并将其发送到chat(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);   
}

我想知道如果窗口依赖于另一个窗口,是否不应该使用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);
}

但根据提供的信息,我只能说这些了。如果您需要更具体的帮助,那么您需要提供更多信息。

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

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

组件例如JTextField、JComboBox等。

我向上帝发誓,今天早些时候我看到了同样的问题。您尝试过搜索这个吗?另请参阅-谢谢您给我JDialog的想法。@user2471839:很高兴它有帮助。祝你好运!获取“错误:组件在容器中具有私有访问权限”
if (Frame1.component != null) {
   Frame1 is opened
} else if (Frame2.component == null) {
   Frame2 is closed
}