2014-01-13 85 views
0

我有幾個JFrames。使用其中的一個(它包含textBox)我想將輸入數據傳遞給另一個類中的變量。該變量用於構建JComboBox選擇列表。我嘗試通過JButton傳輸輸入數據,但最終沒有任何內容被傳輸,並且JComboBox保持空白。我需要以某種方式刷新JComboBox或什麼?我的代碼:通過JFrames傳輸數據

... 
DataBase toTable = new DataBase(); 
... 

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent click) { 

       toTable.data[0] = textField.getText(); 

       }   
}); 

變量從數據庫類:

.... 
String data[] = {"","","","",""}; 
.... 

And the Main Class (it contains JComboBox): 

... 
DataBase data0 = new DataBase(); 
final JComboBox list0 = new JComboBox(data0.data); 
     list0.setBounds(10, 61, 110, 22); 
     contentPane.add(list0); 
+1

請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/a/9554657/418556) –

回答

1

這是正確的。 JComboBox不會注意到您更新了該數組。您將需要使用JComboBox的addItem或setModel方法。

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent click) { 
     toTable.data[0] = textField.getText(); 
     list0.setModel(new DefaultComboBoxModel(toTable.data)); 
    }   
}); 

當然,除非您可以在與您的按鈕相同的範圍內引用list0,否則此代碼將不會運行。如果可能的話,我會建議將button和list0放在同一個類中。

+0

這兩個項目不一定必須在同一個類中,您可以有一個每一個吸氣劑。無論如何,我會試着實現一個更像Gamma書主題觀察者模式的解決方案,以解耦所有對象(如果有3個或4個對象與該模式,會發生什麼?) –

+0

@Jorge_B我同意觀察者 - 可觀察模式非常有用,但沒有看到更多他的代碼,我們不知道這是否會過度殺傷。有時候最好把所有的耦合放在構建GUI的同一個類中。 – acbabis