gpt4 book ai didi

java - 瓦丁表 : how to set maximum initial column width

转载 作者:行者123 更新时间:2023-12-01 11:23:08 28 4
gpt4 key购买 nike

我有一个 Vaadin 表,其中一些列的内容宽度可能变化很大。有时可能没有行包含多个字符;其他时候,可能有一些行的文本足以填满整个屏幕。

我想设置一个明确的列宽,以防止列默认占用太多空间。这可以通过 Table#setColumnWidth 来完成。但是,如果该列的所有值都比指定的宽度短,我想恢复为自动调整大小,以便该列仅达到所需的宽度。

在所有情况下,我仍然希望手动调整列的大小。

本质上,我想说的是“自动调整大小,最大宽度为 x”。有办法做到这一点吗?

最佳答案

这是可能的。您将需要跳入 Javascript。 SSCCE:

@com.vaadin.annotations.JavaScript("main.js")
public class QwertUI extends UI {

@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = QwertUI.class)
public static class Servlet extends VaadinServlet {
}

@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);

final Table table = new Table("The Brightest Stars");

table.addContainerProperty("Name", String.class, null);
table.addContainerProperty("Mag", Float.class, null);

Object newItemId = table.addItem();
Item row1 = table.getItem(newItemId);
row1.getItemProperty("Name").setValue("Sirius");
row1.getItemProperty("Mag").setValue(-1.46f);

// Add a few other rows using shorthand addItem()
table.addItem(new Object[]{"Canopus", -0.72f}, 2);
table.addItem(new Object[]{"Arcturus", -0.04f}, 3);
table.addItem(new Object[]{"Alpha Centaurissssssssssssssssssssssssssssssssssssssssssss", -0.01f}, 4);
JavaScript.getCurrent().addFunction("YouAreWelcome", new JavaScriptFunction(){
@Override
public void call(JsonArray arguments)
{
Object o = arguments.get(0).asString();
table.setColumnWidth("Name", new Integer(o.toString()));
}
});
JavaScript.getCurrent().execute("WeChooseToGoToTheMoon()");
table.setPageLength(table.size());
layout.addComponent(table);
}

}

和main.js

function WeChooseToGoToTheMoon(){
var myMaxWidth = 200;
var elements = document.getElementsByClassName("v-table-cell-content");
var maxSize = -1;
for(i=0; i<elements.length; i++){
if(elements[i].clientWidth > maxSize){
maxSize = elements[i].clientWidth;
}
}
if(maxSize < myMaxWidth){
YouAreWelcome(maxSize);
}else{
YouAreWelcome(myMaxWidth);
}
}

您可能需要调整 JavaScript 以满足您的需求。

关于java - 瓦丁表 : how to set maximum initial column width,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031676/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com