import org.zkoss.zk.ui.GenericRichlet; import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.event.*; import org.zkoss.zul.*; public class CellEditorBug extends GenericRichlet { @Override public void service(Page page) throws Exception { final Window window = new Window(); window.setSizable(true); window.setPage(page); window.setWidth("600px"); window.setHeight("400px"); final Vlayout vlayout = new Vlayout(); vlayout.setVflex("1"); vlayout.setHflex("1"); final ListModelList model = new ListModelList<>(); Listbox listbox = createListbox(model); listbox.setAttribute("org.zkoss.zul.listbox.rod", false); vlayout.appendChild(listbox); Button button = new Button("Add Item"); button.addEventListener(Events.ON_CLICK, new EventListener() { @Override public void onEvent(Event event) throws Exception { model.add("Item " + model.getSize()); } }); vlayout.appendChild(button); Listbox listboxROD = createListbox(model); listboxROD.setAttribute("org.zkoss.zul.listbox.rod", true); vlayout.appendChild(listboxROD); window.appendChild(vlayout); } public Listbox createListbox(ListModelList model) { Listbox listbox1 = new Listbox(); listbox1.setVflex("1"); listbox1.setHflex("1"); Listhead listhead = new Listhead(); listhead.appendChild(new Listheader("Col 1", null, "50%")); listhead.appendChild(new Listheader("Col 2", null, "50%")); listbox1.appendChild(listhead); listbox1.setModel(model); listbox1.setItemRenderer(new ListitemRenderer() { @Override public void render(Listitem item, String data, int index) throws Exception { item.appendChild(createCell()); item.appendChild(createCell()); } public Listcell createCell() { Listcell listcell = new Listcell(); Combobox combobox = new Combobox(); combobox.setHflex("1"); combobox.setModel(new ListModelArray<>(new String[]{"Option 1", "Option 2", "Option 3"})); combobox.setAutocomplete(true); listcell.appendChild(combobox); return listcell; } }); return listbox1; } }