使用swing开发一个简单的Java GUI应用程序。
我从文件中获取了一个ArrayList。如何将其显示为下拉供用户选择。以及如何获取用户选择的对象。??
任何建议都将不胜感激。
答案 0 :(得分:2)
此链接可帮助您创建下拉菜单: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
答案 1 :(得分:2)
查看JComboBox
&#39; s constructors。您可以提供ComboBoxModel
,数组或Vector
。如果您有List
,那么只需从中创建一个新的Vector
。
new JComboBox(new Vector(list));
如果您希望动态变体动态更改,那么您需要使用ComboBoxModel
。
答案 2 :(得分:1)
这是使用固定字符串数组的示例。从这段代码到从文件导入的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 :(得分:1)
如果您有一组对象并想要显示值,则可以使用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