无法添加到我的 JList?
Can't add to my JList?
我有一个名为 PlaceCategory 的 class,它有名称和颜色。当我想创建一个新的 PlaceCategory 时,我首先输入它的名称,然后选择一种颜色。它们被保存为一个字符串和一个颜色。完成后,我使用这些设置创建了一个新对象,然后我想将它添加到我的 JList 中,但它不起作用,我收到此错误 "The method add(Component) in the type Container is not applicable for the arguments (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);
}
}
这是我的 JList
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 class:
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;
}
}
您尝试使用 add(Component) 方法添加新的(图形)组件。如果您有 JPanel,此方法很有用。但是您想向 JList 添加一个新的列表元素。
您必须了解如何在 Swing 中使用模型。它们代表您的组件的数据。使用用于所提供程序中的新 JList 的构造函数,您可以构造一个不可修改的模型。这意味着您不能添加新元素。
您必须为具有 addElement 之类方法的 JList 设置模型。幸运的是 Swing 提供了这样一个模型。它被命名为 DefaultListModel。我认为这些是使其发挥作用的关键点。
我有一个名为 PlaceCategory 的 class,它有名称和颜色。当我想创建一个新的 PlaceCategory 时,我首先输入它的名称,然后选择一种颜色。它们被保存为一个字符串和一个颜色。完成后,我使用这些设置创建了一个新对象,然后我想将它添加到我的 JList 中,但它不起作用,我收到此错误 "The method add(Component) in the type Container is not applicable for the arguments (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);
}
}
这是我的 JList
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 class:
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;
}
}
您尝试使用 add(Component) 方法添加新的(图形)组件。如果您有 JPanel,此方法很有用。但是您想向 JList 添加一个新的列表元素。
您必须了解如何在 Swing 中使用模型。它们代表您的组件的数据。使用用于所提供程序中的新 JList 的构造函数,您可以构造一个不可修改的模型。这意味着您不能添加新元素。
您必须为具有 addElement 之类方法的 JList 设置模型。幸运的是 Swing 提供了这样一个模型。它被命名为 DefaultListModel。我认为这些是使其发挥作用的关键点。