0

使用

list0.setModel(new DefaultComboBoxModel(toTable.data));

我可以更新整个 JComboBox (list0)...但我想在其中添加几行(需要在我的列表中选择几个不同的位置)。当我使用这个命令时,它会进行更新,但每次都在 JComboBox 的第一行。这意味着我最终将在我的 JComboBox 中只有一个位置。

我试过了

list0.setModel(new DefaultComboBoxModel(toTable.data[x]));

但它不起作用。有任何想法吗?

(x-行数)

4

1 回答 1

3

我不确定您要问什么,但似乎您只想将元素动态添加到JComboBox. 您似乎有正确的想法,使用DefaultComboBoxModel. 要在列表中添加新元素,请使用

model.addElement(E object)

有关更多方法,请参见DefaulComboBoxModel

这是一个简单的例子。只需在文本字段中输入一些内容,然后按 Enter。这是我使用的重要代码

@Override
public void actionPerformed(ActionEvent ae) {
     String text = textField.getText();
     model.addElement(text);
     comboBox.setSelectedItem(text);
     textField.setText("");
}

这里是完整的程序

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.*;
public class CBoxModelDemo {

    public CBoxModelDemo() {
        JFrame frame = new JFrame("Combo Box Model");

        String[] list = {"Hello 1", "Hello 2", "Hello 3", "Hello 4"};
        final DefaultComboBoxModel model = new DefaultComboBoxModel(list);
        final JComboBox comboBox = new JComboBox(model);
        frame.add(comboBox, BorderLayout.NORTH);

        final JTextField textField = new JTextField(30);
        frame.add(textField, BorderLayout.SOUTH);
        frame.add(new JLabel("Type something, then press enter", JLabel.CENTER));

        textField.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                String text = textField.getText();
                model.addElement(text);
                comboBox.setSelectedItem(text);
                textField.setText("");
            }
        });

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CBoxModelDemo();
            }
        });
    }
}

在此处输入图像描述

于 2014-01-15T02:08:23.380 回答