java 内存table_java - TableColumn宽度在哪里计算? - 堆栈内存溢出

博客讨论了JavaFX中TableView的列宽问题,当表格内容超出列宽时,表格未能自适应扩展。作者发现即使设置了长字符串,列宽仍保持在400px,且TableColumn的prefWidth始终为80。文章探究了TableSkinUtils.resizeColumnToFitContent方法,但未找到解决方案。

我试图理解为什么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那里,我不知道为什么-我希望它更大-尤其是列最后是一样宽,它应该。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值