1
我有一个TableView,在这个TableView中有5列。其中一列只包含TableView中的行数,它只是对它们进行计数。下面的行为就是我想实现:JavaFX tableview resizeable and unresizeable列
- 数列应有的宽度拟合其内容
- 数列,不得改变大小
- 其他列应是可调整大小的
- 其他列可以并应过长时截断它们的内容,以便它们适合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中实现这种行为?可能吗?
有趣的是,我不知道我也可以绑定这些属性!这至少可以帮助我调整其他(可调整大小)的宽度。但是,当我调整应用程序窗口大小时,此解决方案会导致调整表格列的大小。我希望以某种方式获得它,因为它的内容只需占用足够的空间,而且不会调整大小。那可能吗? – Zelphir 2014-09-08 14:28:00
也许你想要[这个。 ](http://docs.oracle.com/javafx/2/api/javafx/scene/control/TableView.html#CONSTRAINED_RESIZE_POLICY)。但列不会调整大小。也许你需要一些自定义行为,如果是这样,我认为这是另一个问题。 – brian 2014-09-08 15:54:16
这会让他们都变得难以理解。我正在寻找的东西,使numberColumn unresizeable,但留下其他的可调整大小 - 我知道,非常特殊;) – Zelphir 2014-09-08 19:14:24