我目前正在尝试创建一个 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”,那就更好了,因为我也需要这方面的帮助。如果我需要提供更多信息,请告诉我。我在跟踪所需的一切方面有些困难,因为已经完成了很多工作。只是想得到一个想法并将其应用到我的程序中。
最佳答案
show me only the name of each Component as an option.
创建自定义渲染器以显示“name”属性。
基本渲染器的代码类似于:
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() );
查看Combo Box With Custom Renderer了解更多信息和更完整的解决方案。
关于java - 如何从对象列表中将项目添加到 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999868/