Java 通过JFrames进行数据传输
我几乎没有JFrame。使用其中一个(它包含textBox),我想将输入的数据传输到另一个类中的变量。此变量用于构建JComboBox选择列表。我尝试通过JButton传输输入的数据,但最终什么也不传输,JComboBox保持为空。我需要刷新JComboBox还是什么?我的代码:Java 通过JFrames进行数据传输,java,swing,jframe,jcombobox,actionevent,Java,Swing,Jframe,Jcombobox,Actionevent,我几乎没有JFrame。使用其中一个(它包含textBox),我想将输入的数据传输到另一个类中的变量。此变量用于构建JComboBox选择列表。我尝试通过JButton传输输入的数据,但最终什么也不传输,JComboBox保持为空。我需要刷新JComboBox还是什么?我的代码: ... DataBase toTable = new DataBase(); ... button.addActionListener(new ActionListener() { public void ac
...
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);
没错。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放在同一个类中。这两个项不一定必须在同一个类中,您可以为每个项都设置一个getter。无论如何,我会尝试实现一个更像Gamma book Subject Observer模式的解决方案,以便将所有对象解耦(如果有3或4个具有该模式的对象会发生什么?@Jorge_B我同意Observer Observable模式非常有用,但没有看到更多他的代码,我们不知道这样做是否太过分了。有时最好将所有耦合放在构建GUI的同一个类中