【发布时间】:2015-06-08 18:13:37
【问题描述】:
使用 swing 开发一个简单的 java GUI 应用程序。
我有一个从文件中获取的 ArrayList。如何将其显示为下拉列表供用户选择。以及如何获取用户选择的对象??
任何建议将不胜感激。
【问题讨论】:
使用 swing 开发一个简单的 java GUI 应用程序。
我有一个从文件中获取的 ArrayList。如何将其显示为下拉列表供用户选择。以及如何获取用户选择的对象??
任何建议将不胜感激。
【问题讨论】:
此链接应该可以帮助您创建下拉菜单: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
【讨论】:
这是使用固定字符串数组的示例。这是从该代码到从文件导入的 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);
【讨论】:
查看JComboBox 的constructors。您可以提供ComboBoxModel、数组或Vector。如果您有 List,则只需从中创建一个新的 Vector。
new JComboBox(new Vector(list));
如果您希望组合框动态更改,则需要使用ComboBoxModel。
【讨论】:
如果你有一个对象的集合并且想要显示一个值,你可以使用 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
【讨论】: