我正在Vaadin框架中开发Web应用程序。
我有一张有14列的桌子。最后一列包含三个图标,而我遇到的一个问题是,像渲染表格一半的时间一样,最右边的图标会垂直“切成两半”。为避免此问题,我尝试为该列设置固定宽度,以消除该问题,但是什么也没有发生。

我正在使用常规方法:

simCardTable.setColumnWidth(actionColumn, 135);


但是,无论我将列宽设置为什么值,列都保持不变...有人知道为什么吗?是因为它是最后一列要添加的内容,所以没有剩余空间了吗?

顺便说一句,这是我唯一设置了特定宽度的列,所有还原列的标准宽度均由列标题的宽度或单元格内容指定。

任何帮助将不胜感激!

最佳答案

据我从您的问题(“最后一列包含三个图标”)中了解到,您可以使用ColumnGenerator创建带有图标的最后一列。如果我没说错,那意味着您在其中创建了某种自定义布局,并在其中带有此图标,在这种情况下,您应该这样做:

final ColumnGenerator generator = new ColumnGenerator() {
            private static final long serialVersionUID = 1L;

            @Override
            public Component generateCell(Table source, final Object itemId, Object columnId) {
                final HorizontalLayout layout = new HorizontalLayout();
                layout.setSizeFull();

                Embedded icon1 = new Embedded();
                Embedded icon2 = new Embedded();
                Embedded icon3 = new Embedded();

                //Add some themeresource to embedded components

                //Do some listners to this icons

                layout.addComponent(icon1);
                layout.addComponent(icon2);
                layout.addComponent(icon3);

                //Set column with
                setColumnWidth(columnId, 100);

                return  layout;
                }
            };

关于java - setColumnWidth()似乎不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7764913/

10-10 06:25