【问题标题】:I have a class which holds attributes for a menu item. I need to populate three JLists. How can I do so?我有一个包含菜单项属性的类。我需要填充三个 JList。我该怎么做?
【发布时间】:2016-04-03 13:21:15
【问题描述】:

MenuItem 类中菜单项的属性包括名称、价格、卡路里和描述。三个JList 组件分别称为startersListmainsListdessertsList,并在一个称为foodOptionGUIJFrame

目前我已经通过以下方式填充了列表:

startersList.setListData(starters);

(这只是临时修复)

我的问题是我不知道如何将所有开胃菜、主菜和甜点(包括它们的名称、价格、卡路里和描述)列在三个单独的列表中。

public class MenuItem {

    private String name;
    private String price;
    private String descriptions;
    private int calories;

    public MenuItem(String Name, String Price, String desc, int cal) {

        name = Name;
        price = Price;
        descriptions = desc;
        calories = cal;
    }

    public String getPrice(){
        return price;
    }


    public String getName(){
        return name;    
    }

    public void setName(String name){
        this.name = name;
    }

    public String getDescriptions(){
        return descriptions;
    }

    public void setDescriptions(String desc){
        this.descriptions = desc;
    }

    public int getCalories(){
        return calories;
    }

    public void setCalories(int cal){
        this.calories = cal;
    }

    public String toString(){
        return name + ", " + price + ", " + calories + ", " +     descriptions ;
    }

}

【问题讨论】:

  • private String price; 应该是private int price;(以美分、便士或欧元的一部分列出价格)。 MenuItem 还可以声明 3 个常量来描述启动器、电源和沙漠之间的界限。例如public static final int STARTER = 0; 并让类的用户(程序员)在构建项目时为其定义适当的类别。 “我的问题是我不知道如何将所有的开胃菜、主菜和甜点,包括它们的名称、价格、卡路里和描述,列到三个单独的列表中。” 到底是什么问题?你肯定把..
  • .. MenuItem 对象进入列表,然后只需将列表配置为显示最终用户需要查看的内容。我个人会提供信息。在“最小”列表中,并在鼠标悬停时显示其他详细信息(在其他字段中)。那么..具体是什么问题?
  • 对不起,我有点不清楚。我的意思是说我不知道​​如何创建对象,我尝试过: startersList = new JList(); startersList.setBounds(30, 87, 122, 137); contentPane.add(startersList); startersList.addMenuItem("soup", "3", "300", "当日汤");但它是错误的,不起作用
  • 如需尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example。确保只包含一个列表并删除所有其他不必要的内容。
  • @SJ21W,所以你在这个论坛上问了两个问题。为什么您还没有回应任何表明他们是否有帮助的建议?

标签: java swing class jframe jlist


【解决方案1】:
startersList.addMenuItem("soup", "3", "300", "soup of the day"); 

但它错了,不起作用

JList 没有“addMenuItem”方法。

您将数据添加到ListModel。然后将ListModel 添加到JList

阅读 How to Use Lists 上的 Swing 教程部分,获取可以下载的演示代码。

在演示代码中String 数据被添加到ListModel。在您的情况下,您希望将 MenuItem 对象添加到模型中,因此您首先需要创建每个 MenuItem 对象的实例,然后再将其添加到模型中。

所以教程中的代码和你的代码的基本区别是:

listModel = new DefaultListModel();
listModel.addElement( new MenuItem(values for item 1) );
listModel.addElement( new MenuItem(values for item 2) );
list = new JList(listModel);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多