【问题标题】:Updating JComboBox while app is running在应用程序运行时更新 JComboBox
【发布时间】:2014-01-14 23:26:53
【问题描述】:

使用

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

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

我试过了

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

但它不起作用。有什么想法吗?

(x-行数)

【问题讨论】:

    标签: java swing jcombobox comboboxmodel


    【解决方案1】:

    我不确定确切您要问什么,但您似乎只想将元素动态添加到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();
                }
            });
        }
    }
    

    【讨论】:

    • 不错的答案。你是如何制作动画的?
    • @keulej 我使用开源Cam Studio 来捕获视频。另存为.avi。然后将其导入 Photoshop 并保存为网络。就是这样。它会自动将其保存为动画 gif
    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多