无法添加到我的JList?
我有一个名为PlaceCategory的类,它有一个名称和一个颜色。当我想创建一个新的PlaceCategory时,首先输入它的名称,然后选择一种颜色。它们被保存为字符串和颜色。当我完成后,我用这些设置创建一个新的对象,然后我想将它添加到我的JList,但它不工作,我得到这个错误“类型Container中的方法add(Component)不适用对于参数(PlaceCategory)”这里是我的代码无法添加到我的JList?
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类:
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;
}
}
使用添加(组件)您尝试广告的方法d新的(图形)组件。如果你有一个JPanel,这个方法是有用的。但是你想添加一个新的列表元素到你的JList。
您必须了解如何在Swing中使用模型。它们代表组件的数据。在您提供的程序中使用您的构造函数来为新的JList创建一个不可修改的模型。意思是你不能添加新的元素。
您必须将模型设置为具有addElement等方法的JList。幸运的是,Swing提供了这样的模型。它被命名为DefaultListModel。我认为这些是使其工作的关键点。
好现在我已经这样: 'DefaultListModel的DataModel =新DefaultListModel();'' JList的
好吧,我现在开始工作:)谢谢!改变了,所以defaultlistmodel使用PlaceCategory而不是categorylist.addElement我用datamodel.addElement :) –
https://docs.oracle.com/javase/tutorial/uiswing/components/list.html#mutable –