2012-03-23 81 views
0

我想這如何打開新的jFrame對話並返回主界面?

private void botaoConfIOMouseClicked(java.awt.event.MouseEvent evt) {           
ConfigurarIO popup = new ConfigurarIO(); 
popup.setVisible(true); 

botaoConfIO.setEnabled(false); //this line to avoid multiple dialogues 
setIO=popup.getConfig(); //i need to get this boolean from the dialogue "ConfigurarIO" 
//part of the program only to make my logic from the setIO 
if(setIO[0]==false){ 
    jToggleButton1.setEnabled(false); 
    jToggleButton1.setText("Saída"); 
} 
else{ 
    jToggleButton1.setEnabled(true); 
    if(jToggleButton1.isSelected()) jToggleButton1.setText("Pino 1 ON"); 
    else jToggleButton1.setText("Pino 1 OFF"); 

} }

這是對話

public class ConfigurarIO extends javax.swing.JFrame { 

boolean[] inOut=new boolean[8]; 
boolean ok=false; 
/** Creates new form ConfigurarIO */ 
public ConfigurarIO() { 
    initComponents(); 
} 

public boolean[] getConfig(){ 
    return inOut; 
} 

public boolean getOK(){ 
    return ok; 
} 

public void setOK(){ 
    ok=false; 
} 
//the logic was emited 
private void botaoOKMouseClicked(java.awt.event.MouseEvent evt) {          
dispose(); 
ok=true; 
System.out.println(ok); 
}  

的問題是,SETIO不是由第二界面修改,如果我設置要使循環僅由「ok」布爾值打破,具有設置界面的窗口不會打開。這是一個非常探討的問題,但我是Netbeans的新手,我無法在Google上找到它。感謝您的關注

打印屏幕:http://4.bp.blogspot.com/-B7VWmPelJek/T2ysJV8PJcI/AAAAAAAABqQ/0waWxxEEHkw/s320/temp.png

回答

1

你還沒有說是否需要一個框架出於某種原因,或者一個對話框,是否會做,還是不管它是需要有模式的。

如果您循環顯示框架不顯示的原因是您在Swing調度線程上(因爲您在響應鼠標單擊的例程中),並且直到它返回,它不是要更新屏幕。

只有在知道對話框設置了值之後,才能在「框架對話框」上調用方法來獲取值。我將我的調用類作爲構造函數的參數傳遞給對話框,然後在調用類完成時讓對話框代碼調用方法。如果你需要知道什麼時候發生這種情況,那麼你必須把它當作你的調用類中的事件;我無法全面瞭解你想要做什麼,而無法猜測你需要什麼。

如果您需要等到對話完成,並且不需要用戶能夠完成任何操作,那麼您需要的是「模態」對話框,並且我建議您查看JOptionPane以及您想要執行的各種對話選項。然後你的類的調用可以是同步的,也就是說,你可以調用對話框,當調用完成時,對話框全部完成。那麼你不需要將調用類傳遞給框架,因爲它不需要通知你它已經完成;你知道它是在你的呼叫完成時完成的,你可以調用一個方法,例如你已經完成了獲取你想要的值。順便說一句,你的JFrame的子類的構造函數不會調用super();如果你的子類不是JFrame的構造函數,那麼這個構造函數不會調用super()方法。我建議你這樣做......

RC

+0

的提示是使用對話框。我創建了一個新的jDialog,並將我在不同的jFrame中使用的代碼複製/粘貼。這樣,代碼的作品,謝謝。要查看對話框,需要用jDialog1 [jDialog]圖標中的右鍵單擊並按下按鈕以顯示它。爲了澄清,這個對話框的想法是獲取一個ON/OFF配置,並控制主面板啓用或不啓用此主面板中的按鈕,具體取決於它是輸入還是輸出。 – user1288705 2012-03-24 20:18:23