gpt4 book ai didi

java - 将 JPanel 添加到 JList

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:10:07 26 4
gpt4 key购买 nike

我想添加一个扩展 JPanel 的自定义对象进入一个JList。一切都很好,但我无法与他们互动。例如,我无法输入 JTextField添加到面板上。我用DefaultListModel<ListItem = new DefaultListModel<ListItem>();请帮助。

这是自定义对象

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());

最佳答案

I want to add a custom objects that extend JPanel into a JList. Everything is fine, but I can not interact with them. For example, I can not type in the JTextField which is added on panel.

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

关于java - 将 JPanel 添加到 JList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com