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

标签 java swing

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

相关文章:

Java 泛型 TypeOf 返回 T

java - 如果 RxJava 中结果无效,如何发送 onError

java - 通过分页显示 20,000 条记录

java swing setXXXSize() 替代方案?

java - JFileChooser 和 FileDialog 的 UIManager 键是什么?

java - 如何在调用 dispose() 后重置 swing 中的字段

java - 使用线程测试 GAE 数据存储

java - 在java中调试代码找不到源

java - Swing:如何制作具有软边框的非矩形窗口?

java - 如何在表格行中添加按钮