无法添加到我的jlist?

f5emj3cl  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(410)

我有一个叫做placecategory的类,它有一个名字和一个颜色。当我想创建一个新的placecategory时,我首先输入它的名称,然后选择一种颜色。它们被保存为字符串和颜色。完成后,我用这些设置创建了一个新对象,然后我想将它添加到我的jlist中,但它不起作用,我得到一个错误“类型容器中的add(component)方法不适用于参数(placecategory)”,这是我的代码

class NewCatLis implements ActionListener{
public void actionPerformed(ActionEvent ave){
    String categoryName;
    Color color = Color.BLACK;

    categoryName = JOptionPane.showInputDialog(MapProgram.this, "Name on category");
    color = JColorChooser.showDialog(MapProgram.this,"Chooser color", color);
    PlaceCategory pc = new PlaceCategory(categoryName, color);
    categoryList.add(pc);

}

}

这是我的名单

private JList<PlaceCategory> categoryList;

MapProgram(){
super("map");

PlaceCategory[] category = {new PlaceCategory("Tunnelbana", Color.GREEN)};

categoryList = new JList<PlaceCategory>(category);
categoryList.setVisibleRowCount(3);
categoryList.setFixedCellWidth(50);
east.add(new JScrollPane(categoryList));
categoryList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

这是我的placecategory课程:

import java.awt.*;

public class PlaceCategory {

private String name;
public Color color;

public PlaceCategory(String name, Color color){
    this.name = name;
    this.color = color;

}

public String toString(){
    return name;
}

public Color getColor() {

    return color;
}

}
ejk8hzay

ejk8hzay1#

使用add(component)方法,您可以尝试添加一个新的(图形)组件。如果你有一个jpanel,这个方法是有用的。但是您想向jlist添加一个新的list元素。
你必须了解如何使用swing中的模型。它们代表组件的数据。使用所提供程序中用于新jlist的构造函数,可以构造一个不可修改的模型。意味着不能添加新元素。
您必须为jlist设置一个模型,它有一个类似addelement的方法。幸运的是swing提供了这样一个模型。它被命名为defaultlistmodel。我认为这些是使它发挥作用的关键。

相关问题