【问题标题】: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