2013-07-01 1 views
3

Мой код ниже создает новый массив и отправляет его в чат (jFrame).Как проверить, открыта ли jframe?

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

chat.main(info1); 

Но мне нужно изменить этот код, чтобы работать таким образом, что это, если чат JFrame был открыт, затем DonT открыть новый 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

+0

См. Также - [Использование нескольких JFrames, хорошая/плохая практика?] (Http://stackoverflow.com/a/9554657/418556) –

ответ

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

, но это все, что я могу сказать, основываясь на предоставленной информации. Если вам нужна более конкретная помощь, вам необходимо предоставить дополнительную информацию.

+0

Благодарим вас за то, что вы дали мне идею JDialog. – Sarang

+1

@ user2471839: рад, что это помогло. Удачи! –

1

При использовании JFrames его можно просто сделать так:

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

Компонент ex.JTextField, JComboBox и т.д.

+0

получение "ошибка: компонент имеет частный доступ в контейнере" – Akhil