【问题标题】:How to check if a jframe is opened?如何检查是否打开了jframe?
【发布时间】:2013-06-28 03:49:22
【问题描述】:

我下面的代码创建了一个新数组并将其发送到聊天(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


【解决方案1】:

如果窗口依赖于另一个窗口,我想知道您是否不应该使用 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 的想法。
  • @user2471839:很高兴它有帮助。祝你好运!
【解决方案2】:

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

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

组件 ex.JTextField、JComboBox 等

【讨论】:

  • 得到“错误:组件在容器中具有私有访问权限”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
相关资源
最近更新 更多