【发布时间】:2014-10-31 07:19:12
【问题描述】:
我有一个 TableView,在这个 TableView 中有 5 列。其中一列仅包含 TableView 中的行数,它只是对它们进行计数。以下行为是我想要实现的:
- 数字列应具有适合其内容的宽度
- 数字列不可调整大小
- 其他列应可调整大小
- 其他列可以并且应该在内容过长时截断其内容,以便它们适合 TableView 的区域并且不可见水平滚动条
我有 5 个 TableView 列,我是这样创建的:
TableColumn numberColumn = new TableColumn("#");
numberColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Vocable, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<Vocable, String> vocableCellDataFeature) {
return new ReadOnlyObjectWrapper(getItems().indexOf(vocableCellDataFeature.getValue()) + "");
}
});
numberColumn.setResizable(false);
//numberColumn.setMaxWidth(numberColumn.getMaxWidth()-20);
TableColumn<Vocable, String> firstLanguageColumn = new TableColumn<>(Settings.FIRST_LANGUAGE);
firstLanguageColumn.setCellValueFactory(new PropertyValueFactory<>("firstLanguageTranslationsAsString"));
firstLanguageColumn.setMinWidth(100);
TableColumn<Vocable, String> firstLanguagePhoneticScriptColumn = new TableColumn<>(Settings.FIRST_LANGUAGE_PHONETIC_SCRIPT);
firstLanguagePhoneticScriptColumn.setCellValueFactory(new PropertyValueFactory<>("firstLanguagePhoneticScriptsAsString"));
firstLanguagePhoneticScriptColumn.setMinWidth(100);
TableColumn<Vocable, String> secondLanguagePhoneticScriptColumn = new TableColumn<>(Settings.SECOND_LANGUAGE_PHONETIC_SCRIPT);
secondLanguagePhoneticScriptColumn.setCellValueFactory(new PropertyValueFactory<>("secondLanguagePhoneticScriptsAsString"));
secondLanguagePhoneticScriptColumn.setMinWidth(100);
TableColumn<Vocable, String> secondLanguageColumn = new TableColumn<>(Settings.SECOND_LANGUAGE);
secondLanguageColumn.setCellValueFactory(new PropertyValueFactory<>("secondLanguageTranslationsAsString"));
secondLanguageColumn.setMinWidth(100);
getColumns().add(numberColumn);
getColumns().add(firstLanguageColumn);
getColumns().add(firstLanguagePhoneticScriptColumn);
getColumns().add(secondLanguagePhoneticScriptColumn);
getColumns().add(secondLanguageColumn);
getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
所以我的问题是:如何在 JavaFX TableView 中实现这种行为?有可能吗?
【问题讨论】:
标签: java javafx resize width tableview