0
我在使用我在Controller類中填充的數組字符串生成下拉列表時遇到問題。該列表顯示在GUI中,但不包含任何值。我錯誤地使用了getter/setter方法嗎?儘管查看JComboBoxes的Oracle文檔,但我一直無法找到示例。 api引用了setModel方法,我認爲我錯誤地使用了它。誰能提供一個簡單的例子?使用getter/setters填充JComboBox的問題
package example;
import javax.swing.*;
public class MyApp extends JFrame {
JTabbedPane tabbedPane = new JTabbedPane();
View view = new View();
ColourView colourView = new ColourView();
Controller controller = new Controller(colourView);
public MyApp() {
tabbedPane.add("First Tab", colourView);
getContentPane().add(tabbedPane);
}
package example;
import javax.swing.*;
public class ColourView extends View {
private JLabel colourLabel;
private JComboBox comboBox;
public ColourView() {
colourLabel = new JLabel();
colourLabel.setText("Colours");
colourLabel.setBounds(20, 30, 70, 20);
mainContentLayeredPane.add(colourLabel, JLayeredPane.DEFAULT_LAYER);
comboBox = new JComboBox();
comboBox.setSize(100, 20);
mainContentLayeredPane.add(comboBox, JLayeredPane.DEFAULT_LAYER);
}
public void setComboBox(String[] list) {
comboBox.setModel(new DefaultComboBoxModel());
for (Object item : list) {
comboBox.addItem(item);
}
}
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
MyApp app = new MyApp();
app.setVisible(true);
app.setSize(600, 600);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
package example;
import java.util.ListIterator;
public class Controller {
private ColourView colourView;
ListIterator<String> litr;
String listData[] = {"Item 1", "Item 2", "Item 3", "Item 4"};
Controller(ColourView colourView) {
this.colourView = colourView;;
}
public void getListData() {
colourView.setComboBox(listData);
}
}
謝謝。我認爲我需要從構造函數調用這個來填充應用程序加載時。 – user1783462 2013-03-22 11:59:37
您也可以在運行期間更改模型。但我認爲最好的方法是使用可用數據在啓動時(在構造函數中)初始化模型。如果數據在初始化後出現,您仍可以添加/刪除模型中的數據。 – MalaKa 2013-03-22 12:02:56