【问题标题】:How to change Vaadin 7 layout based on Combobox items selection?如何根据组合框项目选择更改 Vaadin 7 布局?
【发布时间】:2015-06-11 19:58:14
【问题描述】:

例如,如果我有三个项目,并且我想根据组合框中选择的项目更改布局......我该如何实现?这是我的示例代码:

ComboBox combo = new ComboBox("My combo box");
combo.addItems("item 1", "item 2", "item 3");
combo.setTextInputAllowed(false);
combo.setNullSelectionAllowed(false);
combo.select("item 1");
combo.setImmediate(true);
combo.addValueChangeListener(new Property.ValueChangeListener() {
/**
*/
private static final long serialVersionUID = 1L;
@Override
public void valueChange(ValueChangeEvent event) {
Notification.show("Selected item: " + event.getProperty().getValue(), Type.HUMANIZED_MESSAGE);
}
});
ExampleGrid grid = new ExampleGrid();
grid.setWidth(100, Unit.PERCENTAGE);
Panel panel = new Panel(grid);
panel.setSizeFull();
addComponent(panel);

因此,为组合框中的三个项目创建了三个面板。但是,我不知道如何根据在组合框中选择的项目更改布局?

当然,我可以轻松获得第一个面板。但是,我想查看基于组合框选择的所有三个面板。

【问题讨论】:

    标签: java combobox vaadin vaadin7


    【解决方案1】:

    将您的面板放在那里并将它们与项目相关联。例如。使用枚举并将相关性存储在地图中。向组合框添加值更改侦听器,并根据选择在面板上设置可见性(false/true)。

    【讨论】:

    • 感谢您的建议。使用枚举并在地图中存储相关性,我已经完成了。但是,这种方法的问题在于组合框的布局以某种方式漂浮在下方(它像树上的水果一样悬挂)。这是我使用的代码 sn-p:LinkedHashMap<EnumType, String> map = new LinkedHashMap<EnumType, String>();map.put(EnumType.ENUM1, "Enum1 Caption");ComboBox box = new ComboBox("Box", ContainerUtils.createContainerFromMap(map));box.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_PROPERTY);
    • 我很确定,布局问题不是使用枚举的结果。如果这有助于使您的代码运行,请接受答案。如果您还有其他不直接涉及原始问题的问题,请开始一个新问题(SO 是一个 QA 站点,没有论坛)或添加相关代码/屏幕截图作为对原始问题的编辑,如果您认为有问题携手并进。
    • 对不起,我没有足够的分数来标记“这个答案很有用”按钮。但是,我感谢你的建议。无论如何,您的建议很有用。 ;)
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 2011-09-19
    • 2012-01-30
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多