Java 将JPanel添加到JList

Java 将JPanel添加到JList,java,swing,list,jpanel,Java,Swing,List,Jpanel,我想将扩展JPanel的自定义对象添加到JList中。一切都很好,但我无法与他们互动。例如,我无法输入面板上添加的JTextField。我使用DefaultListModel 我想添加一个自定义对象,将JPanel扩展到JList中。一切都很好,但我无法与他们互动。例如,我无法输入面板上添加的JTextField 这是因为Jlist不保存或显示组件,而只是呈现组件。如果您想要一个类似列表的对象来保存可编辑的组件,用户可以与之交互,那么您可以创建自己的对象——使用使用GridLayout并保存组件

我想将扩展
JPanel
的自定义对象添加到JList中。一切都很好,但我无法与他们互动。例如,我无法输入面板上添加的
JTextField
。我使用
DefaultListModel
我想添加一个自定义对象,将JPanel扩展到JList中。一切都很好,但我无法与他们互动。例如,我无法输入面板上添加的JTextField


这是因为Jlist不保存或显示组件,而只是呈现组件。如果您想要一个类似列表的对象来保存可编辑的组件,用户可以与之交互,那么您可以创建自己的对象——使用使用GridLayout并保存组件网格的JPanel,或者使用至少有两列的JTable,一列(“标签”)不可编辑,另一列(“文本字段”)不可编辑

“要么创建自己的“你这是什么意思,创建我自己的列表?”是的,有点。如果您有少量单元格,那么创建一个使用GridLayout的JPanel,将您的单元格添加到其中,并将其放置在JScrollPane中。对不起,这听起来可能像是新手的问题,但我如何创建自己的列表?JList list=新的JList()?我已经这么做了@正如我在上面的评论中所解释的那样。是的,看起来这就是方法。谢谢。
public class ListItem extends JPanel{

private static final long serialVersionUID = 1L;
private JTextField textField;

public ListItem() {
    setLayout(new MigLayout("", "[grow][grow]", "[30px:n:30px][30px:n:30px][30px:n:30px]"));

    JLabel lblNewLabel = new JLabel("New label");
    add(lblNewLabel, "cell 0 0,alignx trailing");

    textField = new JTextField();
    add(textField, "cell 1 0,growx");
}
public class ListItemRenderer implements ListCellRenderer<Object>{

@Override
public Component getListCellRendererComponent(JList<? extends Object> list, Object value, int index,
        boolean isSelected, boolean cellHasFocus) {

    Component component = (Component) value;

    if(isSelected)
        component.setBackground(Color.RED);

    return component;
}
list = new JList<ListItem>(addedItems);
ListItem temp = new ListItem();
addedItems.addElement(temp);
list.setCellRenderer(new ListItemRenderer());