gpt4 book ai didi

java - 使用 getter/setter 填充 JComboBox 时遇到问题

转载 作者:行者123 更新时间:2023-12-02 07:10:40 25 4
gpt4 key购买 nike

我在使用 Controller 类中填充的数组字符串生成下拉列表时遇到问题。该列表显示在 GUI 中,但不包含任何值。我是否错误地使用了 getter/setter 方法?尽管查看了 JComboBoxes 的 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);
}
}

最佳答案

您必须将元素添加到 ComboboxModel 中,如下所示:

// define model
DefaultComboBoxModel model;
...

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

注意:如果要修改Elements,则必须在模型中再次修改,而不是在ComboBox本身中修改。

关于java - 使用 getter/setter 填充 JComboBox 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com