2014-01-13 87 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