0

在我的 JTables 中输入一个新Student对象时,我想在我的 JComboBox 中保存所有地区/城市。每个城市都存储在 aHashMap中,其中包含名称作为键(因为没有重复),并且它是邮政编码。

例子:hashMap.put("City", "AAA")

现在我的问题是在 JComboBox 本身内表示HashMapOR 。List<String>便宜且简单的替代方法是简单地重写String[]以保存所有城镇名称和switch-case选定的值,但几乎没有问题:

  1. 太长了,添加新的地区可能会很痛苦或浪费时间
  2. 很多不必要的代码
  3. 如果被某人审查,看起来很可怕
  4. 可能比我提出的方法慢
4

1 回答 1

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);

宣言 :

在此处输入图像描述

于 2014-08-23T21:04:04.530 回答