Я хочу добавить пользовательские объекты, которые расширяют JPanel
в JList. Все в порядке, но я не могу с ними взаимодействовать. Например, я не могу ввести JTextField
, который добавляется на панель. Я использую DefaultListModel<ListItem = new DefaultListModel<ListItem>();
Помощник Plase.Добавление JPanel в 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());
«создайте свой собственный», что вы подразумеваете под этим, создайте свой собственный список? –
@ ЂрђеЂашић: Да, вроде. Если у вас небольшое количество ячеек, создайте JPanel, который использует GridLayout, добавьте к нему свои ячейки и поместите его внутри JScrollPane. –
Прошу прощения, может быть, это будет звучать как вопрос новичков, но как мне создать свой собственный список? Список JList = новый JList()? Я уже это делаю. –