当我在JTables中输入一个新的Student
对象时,我希望将所有的地方/城市都放在我的JComboBox中。每个城市都存储在HashMap
内,其中包含名称作为密钥(因为没有重复项)和它的邮政编码。
示例:hashMap.put("City", "AAA")
现在我的问题是在JComboBox本身内代表HashMap
OR List<String>
。便宜又简单的替代方法就是简单地重写String[]
以保存所有城镇名称和switch-case
所选值,但是几乎没有问题:
答案 0 :(得分:1)
你走了:
String [] string = {"city","town","country","province"};
java.util.List<String> list = new ArrayList<String>(Arrays.asList(string));
Object[] arrayObject= list.toArray();
String [] data = Arrays.copyOf(arrayObject, arrayObject.length,String[].class); // java 1.6+
JComboBox<String> combo = new JComboBox<>( data);
实际上你可以这样做:
String [] string = {"city","town","country","province"};
java.util.List<String> list = new ArrayList<String>(Arrays.asList(string));
JComboBox< java.util.List<String>> combo = new JComboBox<>( );
combo.addItem(list);
但是,JComboxBox
的每个元素都将连续保存列表的所有元素。
*防止java.util.List
和{}之间的歧义java.awt.List
,我们应该清楚地宣布它们。
这里是完整的演示:
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class ComboBoxDemo extends JFrame {
public ComboBoxDemo() {
super("JComboBox Demo");
String [] string = {"city","town","country","province"};
java.util.List<String> list = new ArrayList<String>(Arrays.asList(string));
Object[] arrayObject= list.toArray();
String [] data = Arrays.copyOf(arrayObject, arrayObject.length,String[].class); // java 1.6+
JComboBox<String> combo = new JComboBox<>( data);
setLayout(new FlowLayout(FlowLayout.CENTER));
add(combo, BorderLayout.CENTER);
}
public static void main(String[] args) {
ComboBoxDemo g = new ComboBoxDemo();
g.setVisible(true);
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g.setBounds(100, 100, 300, 300);
}
}
的结果
JComboBox< java.util.List<String>> combo = new JComboBox<>( );
combo.addItem(list);
声明: