java - 如何从对象列表中将项目添加到 JComboBox
问题描述
我目前正在尝试创建一个JComboBox
向我显示不同汽车组件名称的名称。该类Component
当前具有以下变量:
public class Component{
private int id;
private String name;
private double price;
private int quantity;
private String type;
}
现在我有另一个类,其中包含所有存在的组件,它们已从我的数据库中加载:
public class Stand{
private List<Component> allComponents;
public Stand(){
//loads the components from my database into allComponents
this.allComponents = componentDAO.loadComponents();
public List<Componente> getAllComponents(){
return this.allComponents;
}
}
我现在正在寻找的是创建一个名为的类SelectComponent
,其中一些JComboBox
仅向我显示每个Component
选项的名称。我该怎么做?
此外,在选择所需的组件后Component
,我将在同一个类中使用另一个List<Component>
来保留选定的组件,因为我需要在同一个窗口中拥有多个 JComboBox。选择后如何将所选内容添加Component
到此List
?
如果您可以将 JComboBox 设置为已经显示特定类型的组件,例如“Paint”,那会更好,因为我也需要帮助。如果我需要提供更多信息,请告诉我。我在跟踪所需的一切方面有些困难,因为已经完成了很多工作。只是想得到一个想法并将其应用于我的程序。
解决方案
仅显示每个组件的名称作为选项。
创建自定义渲染器以显示“名称”属性。
基本渲染器的代码类似于:
class CarComponentRenderer extends BasicComboBoxRenderer
{
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof CarComponent)
{
CarComponent carComponent = (CarComponent)value;
setText( carComponent.getName() );
}
return this;
}
}
然后,您可以使用以下方法在组合框上设置渲染器:
comboBox.setRenderer( new CarComponentRenderer() );
查看带有自定义渲染器的组合框以获取更多信息和更完整的解决方案。
推荐阅读
- python - 使用 Django 进行电子邮件编码
- java - 由 JsonItemReaderBuilder 构建的单元测试阅读器
- ios - Firebase 通知 iOS 在本机反应
- python - 如何使用 conda 更新到最新的 Python 版本?
- javascript - 使用带有 JavaScript 的量角器单击日历中的日期
- sql - 用于在 aws athena (presto) 中创建数组映射的 sql 查询
- xml - 在 XSLT 中查找具有最大子节点数的节点
- jquery - 使用 Ajax.js 和 JQuery.js 将多个文件发布为 null
- mysql - 在 Where 子句中使用 Join 的 Mysql 更新表
- android - 如何设置android web view内容的最大长度