我试图理解为什么TableView宽度小于其(仅) TableColumn宽度。
在下面的示例中,列大小正确(根据其内容),但是表被切成(我相信)400px。
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
import java.util.Collections;
public class MVCE extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage){
var table = createTable();
var scene = new Scene(table);
stage.setScene(scene);
stage.show();
}
private TableView createTable() {
ObservableList content = FXCollections.observableArrayList();
content.add("loooooooooooooooooooooooooooooooooooooong string");
var column = new TableColumn("title");
var columns = Collections.singletonList(column);
column.setCellValueFactory(data -> new SimpleStringProperty(data.getValue()));
var table = new TableView<>(content);
table.getColumns().setAll(columns);
return table;
}
}
我研究了TableSkinUtils.resizeColumnToFitContent方法(很有希望的名称),但似乎只考虑了标头的内容(实际上并没有比400px宽),即使我将长字符串放入标头中,效果也是如此是一样的 cell.prefWidth总是80那里,我不知道为什么-我希望它更大-尤其是列最后是一样宽,它应该。
博客讨论了JavaFX中TableView的列宽问题,当表格内容超出列宽时,表格未能自适应扩展。作者发现即使设置了长字符串,列宽仍保持在400px,且TableColumn的prefWidth始终为80。文章探究了TableSkinUtils.resizeColumnToFitContent方法,但未找到解决方案。
10万+

被折叠的 条评论
为什么被折叠?



