2010-09-16 91 views
1

我瞭解"How to Use Actions"教程,但無法弄清楚如何使它在多個JFrame表單之間工作。 我嘗試使用updateComboBox方法public static,以便可以從其他表單訪問 ,但由於自動生成的非靜態變量jComboBox無法從靜態上下文中引用,NetBeans IDE拒絕允許它。 主窗體包含一個JComboBox,需要根據用戶輸入(菜單,按鈕,文本字段等)進行修改。 部分小部件位於主窗體上,其他部件位於輔助窗體上。 例如,主窗體使輔助窗體可見;輔助表單會對配置進行一些更改;那麼用戶通過按SAVE按鈕隱藏輔助表單。 輔助表單如何最好讓主表單知道配置已更新,現在需要將更改應用到JComboBox? 行動是否適合這一點或者是否會採取其他方法更合適?如何在java swing表單之間發送信號?

public class Controller extends javax.swing.JFrame { 
    ... 
    private javax.swing.JComboBox jComboBox; 
    private void updateComboBox() { 
     String[] names = Configuration.getNames(); 
     for (String n : names) { 
      jComboBox.addItem(n); 
     } 
     ... 

回答

5

如何控制器類將舉行到您的框架的引用和管理信號你需要什麼?您還可以查看Observer模式,其中您的主窗體將監聽由輔助窗體所做的更改。

+0

提及觀察者模式+1。 – huo73 2010-09-17 08:23:13

+0

以前從未(有意)使用過設計模式,但那是完美的解決方案。謝謝。 – jacknad 2010-09-17 12:52:46

1

由於第二種形式進行了一些設置修改,我假設用戶在搞亂設置的同時,想禁止用戶使用主應用程序。

您可以做的是創建第一個窗體,然後在第一個窗體中創建設置窗體。然後,您可以使用線程同步(例如鎖定)使第一個表單等待,直到用戶按下設置表單上的「OK按鈕」。一旦按下「OK按鈕」,鎖就會被移除,第一種形式將通過調用第二種形式的方法繼續執行,以便它可以訪問用戶剛輸入的數據。