gpt4 book ai didi

JavaFx-14 resizeColumnToFitContent 方法

转载 作者:行者123 更新时间:2023-12-05 03:51:42 29 4
gpt4 key购买 nike

JavaFx-14 将此方法放在 TableColumnHeader 中,而不是在 Skin 中。如何从 TableColumn 和 TableView 中找到 TableColumnHeader?

最佳答案

不知道你是否还需要这个,但如果其他人有兴趣,这就是我基于上面 David Goodenough 的 scala 代码在 java 中解决问题的方法。

TableSkin 类

import javafx.scene.control.TableColumnBase;
import javafx.scene.control.TableView;
import javafx.scene.control.skin.NestedTableColumnHeader;
import javafx.scene.control.skin.TableColumnHeader;
import javafx.scene.control.skin.TableHeaderRow;
import javafx.scene.control.skin.TableViewSkin;

import java.util.ArrayList;
import java.util.List;

public class CustomTableViewSkin extends TableViewSkin<Track> {
private List<CustomTableColumnHeader> columnHeadersList = new ArrayList<>();

private class CustomTableColumnHeader extends TableColumnHeader {
/**
* Creates a new TableColumnHeader instance to visually represent the given
* {@link TableColumnBase} instance.
*
* @param tc The table column to be visually represented by this instance.
*/
public CustomTableColumnHeader(TableColumnBase tc) {
super(tc);
}

public void resizeColumnToFitContent() {
super.resizeColumnToFitContent(-1);
}
}

public CustomTableViewSkin(TableView<Track> tableView) {
super(tableView);
}

@Override
protected TableHeaderRow createTableHeaderRow() {
return new TableHeaderRow(this) {
@Override
protected NestedTableColumnHeader createRootHeader() {
return new NestedTableColumnHeader(null) {
@Override
protected TableColumnHeader createTableColumnHeader(TableColumnBase col) {
CustomTableColumnHeader columnHeader = new CustomTableColumnHeader(col);

if (columnHeadersList == null) {
columnHeadersList = new ArrayList<>();
}

columnHeadersList.add(columnHeader);

return columnHeader;
}
};
}
};
}

public void resizeColumnToFit() {
if (!columnHeadersList.isEmpty()) {
for (CustomTableColumnHeader columnHeader : columnHeadersList) {
columnHeader.resizeColumnToFitContent();
}
}
}
}

以及 TableView 的类

import javafx.scene.control.TableView;

public class CustomTableView extends TableView<Foo> {
private final CustomTableViewSkin thisSkin;

public CustomTableView() {
super();

setSkin(thisSkin = new CustomTableViewSkin(this));
}

public void resizeColumnsToFitContent() {
if (thisSkin != null && getSkin() == thisSkin) {
thisSkin.resizeColumnToFit();
}
}
}

关于JavaFx-14 resizeColumnToFitContent 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62679995/

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