valor tabla sirve que poner para otro obtener lista filtrar dependiente cuadros cuadro como combinados combinado java combobox vaadin

java - tabla - obtener el valor de un selectonemenu



agregar texto a un cuadro combinado con una fuente de datos (3)

Tengo un combobox vaadin que está lleno de un containerdatasource

setContainerDataSource(container);

Ahora quiero insertar un texto estático en algún lugar de la lista de resultados.

Por ejemplo:

Un Combobox que está lleno con un contenedor de y la primera entrada que aparece en la lista de resultados es algún tipo de encabezado:

Personas:
Thomas S.
Lucas B.
Alex X.

¿Puedo lograr eso manipulando el contenedor o el combobox?

Intenté establecer el origen del contenedor y agregar una cadena / etiqueta a través de addItem () al ComboBox, pero parece que no funciona. Soy un poco nuevo en esto, así que no sé cómo continuar.


Debería hacer el cambio en el contenedor (por ejemplo: agregar elementos ...) y volver a llamar a setContainerDataSource (contenedor) en el cuadro combinado (para que se propague al cliente).


Si su código es similar a esto:

BeanItemContainer<Person> container = new BeanItemContainer<Person>(Person.class); container.addAll(myPersonList); ComboBox combobox = new ComboBox(); combobox.setContainerDataSource(container); combobox.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); combobox.setItemCaptionPropertyId("name"); // the person''s name field will be shown on the UI // imho if you want to add a static text (String) into a container // which populated with Person objects then you have to make a fake Person object Person staticText = new Person(); staticText.setName("My static text"); combobox.addItem(staticText); // if you want to specify the index of the item, add them one by one in for cycle // and insert the static text item in the appropritate place


Si está utilizando el ComboBox como inmediato y no quiere que la "Persona:" se maneje como una persona real, podría usar setNullSelectionItemId para definir a la persona falsa como un verdadero objeto ficticio. Sin embargo, esta solución tiene la limitación de que solo puede agregar un objeto ficticio.

Aquí está mi ejemplo que agrega "Persona:" en la parte superior de la lista y lo maneja como un valor nulo. Tenga en cuenta que estoy usando Vaadin 7.

import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.util.BeanItemContainer; import com.vaadin.server.VaadinRequest; import com.vaadin.ui.AbstractSelect; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Notification; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; /** * The Application''s "main" class */ @SuppressWarnings("serial") public class MyVaadinUI extends UI { @Override protected void init(VaadinRequest request) { final VerticalLayout layout = new VerticalLayout(); layout.setMargin(true); setContent(layout); BeanItemContainer<Person> container = new BeanItemContainer<Person>(Person.class); Person nullPerson = new Person(0, "Person:"); container.addBean(nullPerson); container.addBean(new Person(1, "Django")); container.addBean(new Person(2, "Schultz")); ComboBox combobox = new ComboBox(); combobox.setImmediate(true); combobox.setNullSelectionItemId(nullPerson); // Define the null person as a dummy. combobox.setContainerDataSource(container); combobox.setItemCaptionMode(AbstractSelect.ItemCaptionMode.PROPERTY); combobox.setItemCaptionPropertyId("name"); // the person''s name field will be shown on the UI combobox.addValueChangeListener(new Property.ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { // Will display ''null selected'' when nullPerson is selected. Notification.show(event.getProperty().getValue() + " selected"); } }); layout.addComponent(combobox); } }