gpt4 book ai didi

java - 如何从对象列表中将项目添加到 JComboBox

转载 作者:行者123 更新时间:2023-12-02 01:43:51 24 4
gpt4 key购买 nike

我目前正在尝试创建一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com