0

Controller クラスに入力した配列文字列を使用してドロップダウン リストを生成するのに問題があります。リストは GUI に表示されますが、値は含まれていません。getter/setter メソッドの使い方が間違っていますか? JComboBox の Oracle ドキュメントを見ても、例を見つけることができませんでした。この API は、私が間違って使用していると思われる setModel メソッドを参照していました。誰でも簡単な例を提供できますか?

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);
}
}
4

1 に答える 1

2

ComboboxModel次のよう に要素を追加する必要があります。

// define model
DefaultComboBoxModel model;
...

public void setComboBox(String[] list) {
    model = new DefaultComboBoxModel(list);
    comboBox.setModel(model);
}

: 要素を変更する場合は、ComboBox 自体ではなく、モデルで再度変更する必要があります。

于 2013-03-22T11:27:31.097 に答える