I'm trying to develop auto complete text, which shows a dropdown of suggestions in tableview popup, and I'm having an issue of how can I hide the whole header-column of tableview in javafx 2.1
Apply a custom stylesheet to the table:
table.getStylesheets().addAll(getClass().getResource("hidden-tableview-headers.css").toExternalForm());
Where the file hidden-tableview-headers.css
is placed in the same location as the class loading the css resource and contains the line:
.column-header-background { visibility: hidden; -fx-padding: -1em; }
The visibility: hidden
attribute tells JavaFX not to draw the node, but still leave space where the heading was. As the header is 1 row of text height high, you can tell the invisible header not to take up any space by setting -fx-padding: -1em;
.
-fx-padding: -2em;
instead of -1em
as one was still leaving some space when I tried. –
Sterilization The solution is very simple; after the tableview renders, we can get the table header and make invisible, therefor the table header doesn't have to re-layout when the table view layout changes. To catch table rendering is done, we can use width property change, and hide the table header
Here is the code:
tableView.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
// Get the table header
Pane header = (Pane)tableView.lookup("TableHeaderRow");
if(header!=null && header.isVisible()) {
header.setMaxHeight(0);
header.setMinHeight(0);
header.setPrefHeight(0);
header.setVisible(false);
header.setManaged(false);
}
}
});
If you don't want to add additional .css file you may use your existing css:
.hide-header .column-header-background {
visibility: hidden; -fx-padding: -1em;
}
Where .hide-header
is random name which you should add to your java code:
table.getStyleClass().add("hide-header");
© 2022 - 2024 — McMap. All rights reserved.