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