【问题标题】:How to display arraylist<items> as a drop down in Java如何在 Java 中将 arraylist<items> 显示为下拉列表
【发布时间】:2015-06-08 18:13:37
【问题描述】:

使用 swing 开发一个简单的 java GUI 应用程序。

我有一个从文件中获取的 ArrayList。如何将其显示为下拉列表供用户选择。以及如何获取用户选择的对象??

任何建议将不胜感激。

【问题讨论】:

    标签: java swing arraylist


    【解决方案1】:

    此链接应该可以帮助您创建下拉菜单:http://www.java2s.com/Code/Java/Swing-JFC/Usingdropdownlists.htm

    在您在菜单中插入项目的部分中,只需循环遍历您的 ArrayList 项目并一一选择它们。

    for (int i = 0; i < list.size(); i++) {
        //insert in menu .. list.get(i); 
    }
    

    actionlistener 会处理这个动作。即知道选择了哪个元素。

    更多信息在这里:https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

    【讨论】:

      【解决方案2】:

      这是使用固定字符串数组的示例。这是从该代码到从文件导入的 arrayList 的相当简单的外推:

      // define items in a String array:
          String[] languages = new String[] {"English", "French", "Spanish", "Japanese", "Chinese"};
      
          // create a combo box with the fixed array:
          JComboBox<String> comboLanguage = new JComboBox<String>(languages);
      

      【讨论】:

        【解决方案3】:

        查看JComboBox 的constructors。您可以提供ComboBoxModel、数组或Vector。如果您有 List,则只需从中创建一个新的 Vector。

        new JComboBox(new Vector(list));
        

        如果您希望组合框动态更改,则需要使用ComboBoxModel。

        【讨论】:

          【解决方案4】:

          如果你有一个对象的集合并且想要显示一个值,你可以使用 Vector 类作为模型,然后使用 BasicComboBoxRenderer 类创建一个自定义渲染器来显示文本。

              Vector<Employee> data = new Vector<Employee>();
              data.addElement(new Employee(1001, "John Smith"));
              data.addElement(new Employee(1002, "Linda Baker"));
              data.addElement(new Employee(1003, "Youcef Hussain"));
              data.addElement(new Employee(1004, "Jia Lia"));
          
              JComboBox jcb = new JComboBox(data);
              jcb.setRenderer(new ComboBoxRenderer());
          
          class ComboBoxRenderer extends javax.swing.plaf.basic.BasicComboBoxRenderer
          {
              public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus)
              {
                  Employee emp = (Employee)value;
                  setText(emp.getName());
                  return this;
              }
          }
          
          class Employee{
              protected int employee_id;
              public String employee_name;
          
              public Employee(int id, String name){
                  this.employee_id = id;
                  this.employee_name = name;
              }
          
              public String getName(){
                  return this.employee_name;
              }
          }
          

          完整的代码示例可以在这里找到http://www.hostprojects.net/snippets/java/158/basiccomboboxrenderer-example

          【讨论】:

            猜你喜欢
            • 2016-01-29
            • 2019-05-05
            • 1970-01-01
            • 1970-01-01
            • 2022-07-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-07
            相关资源
            最近更新 更多