2014-01-08 52 views
-2

嗨所以我做這個簡單的電影售票系統 我的程序流程如下,所有頁面都是在不同的JFrames:主菜單>選擇天>選擇電影>選擇座位>回的MainMenu禁用JToggleButton中

我在座位選擇器中使用JToggle。一旦選擇了整個執行過程中是否可以禁用切換按鈕?我正在使用JToggleButton.setEnabled(false);,但是每次我回到菜單並回到座位選擇器時,該按鈕仍然沒有被禁用。我想要做的就是在我回到MainMenu後禁用它,所以當我返回時到座位選擇器,我不能選擇這個座位了。

下面是一些代碼在它:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    this.setVisible(false); 
    MainSelection s = new MainSelection(); 
    s.setVisible(true); 

    if(jToggleButton1.isSelected()) 

    { 
     jToggleButton1.setEnabled(false); 
    } 

    if(jToggleButton2.isSelected()) 

    { 
     jToggleButton2.setEnabled(false); 
    } 

    if(jToggleButton3.isSelected()) 

    { 
     jToggleButton3.setEnabled(false); 
    } 

}           

請檢查出來

回答

1

嗯,JToggleButton的‘啓用’屬性最有可能本身並不重置true當你把它設置爲false。我認爲你實際上正在尋找一個其他JToggleButton的實例。也許你每次訪問「select seat」GUI時都會重新創建它? 在這種情況下,您想要的是從用戶界面中分離出應用程序數據(其中您有關於哪些座位已保留的信息等)。

我相信這樣做的好方法是與Model-View-Controller模式一起工作。 讓我給你介紹這種設計模式:

  • 模式握着你的應用程序數據(例如,可能是一個Set<Seat>
  • 查看是用來顯示你的數據(也就是您的JToggleButton
  • 控制器爲切入點,從你的模型被更新(在你的情況,這些也都是JToggleButton

您可以在這裏閱讀更多關於它的信息:MVC Pattern - tutorialspoint

基本上,而不是創建一個新的「空」 每次查看,你想與您的數據容器(在模式)中包含的值加載它。然後,當您點擊代表座位的某個JToggleButton控制器)時,您不會直接更改按鈕的狀態,但只需更新模型以切換(不管是否保留)你的座位。然後,每次更新型號時,都會使用新的可用數據刷新。而已!

+--------------------------------------+ 
| +-----------+      | 
| | Model <-------+    | 
| +-----v-----+  |    | 
|   |    |    | 
|   |    |    | 
| +-----v---+---------^----------+ | 
| | View |  Controller  | | 
| +---------+--------------------+ | 
|          | 
+---------- Your application ----------+ 

隨意問更多地瞭解它,它似乎真的想了很多改變,但它帶有許多有趣的設計特點:)
特別是如果你需要另一個查看(例如,一個File,您希望每次更改時都保存您的數據)!