diff --git a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java --- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java +++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/NestedTableColumnHeader.java @@ -36,8 +36,11 @@ import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.event.EventHandler; +import javafx.geometry.Pos; import javafx.scene.Cursor; import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.control.Labeled; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.input.MouseEvent; @@ -87,7 +90,11 @@ private final InvalidationListener columnTextListener = new InvalidationListener() { @Override public void invalidated(Observable property) { - label.setVisible(getTableColumn().getText() != null && ! getTableColumn().getText().isEmpty()); + String text = getTableColumn().getText(); + boolean show = text != null && ! text.isEmpty(); + label.setText(text); + label.setVisible(show); + label.setManaged(show); } }; @@ -113,7 +120,7 @@ @Override public void setTableHeaderRow(TableHeaderRow header) { super.setTableHeaderRow(header); - label.setTableHeaderRow(header); +// label.setTableHeaderRow(header); // tell all children columns what TableHeader they belong to for (TableColumnHeader c : getColumnHeaders()) { @@ -123,7 +130,7 @@ @Override public void setParentHeader(NestedTableColumnHeader parentHeader) { super.setParentHeader(parentHeader); - label.setParentHeader(parentHeader); +// label.setParentHeader(parentHeader); } /** @@ -196,7 +203,7 @@ @Override void dispose() { super.dispose(); - if (label != null) label.dispose(); +// if (label != null) label.dispose(); getColumns().removeListener(weakColumnsListener); @@ -213,7 +220,8 @@ getChildren().clear(); } - private TableColumnHeader label; +// private TableColumnHeader label; + private Label label; private ObservableList columnHeaders; public ObservableList getColumnHeaders() { @@ -222,13 +230,16 @@ } private void initUI() { - label = new TableColumnHeader(getTableView(), getTableColumn()); - label.setTableHeaderRow(getTableHeaderRow()); - label.setParentHeader(getParentHeader()); - label.setNestedColumnHeader(this); - + label = new Label(); + label.getStyleClass().addAll("column-header"); + label.setAlignment(Pos.CENTER); + if (getTableColumn() != null) { + label.setText(getTableColumn().getText()); getTableColumn().textProperty().addListener(weakColumnTextListener); + } else { + label.setVisible(false); + label.setManaged(false); } getTableView().columnResizePolicyProperty().addListener(weakResizePolicyListener); @@ -403,7 +414,7 @@ double w = getWidth() - getInsets().getLeft() - getInsets().getRight(); double h = getHeight() - getInsets().getTop() - getInsets().getBottom(); - int labelHeight = (int) label.prefHeight(-1); + int labelHeight = (int) (label.isVisible() ? label.prefHeight(-1) : 0); if (label.isVisible()) { // label gets to span whole width and sits at top diff --git a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TableColumnHeader.java b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TableColumnHeader.java --- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TableColumnHeader.java +++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TableColumnHeader.java @@ -83,7 +83,10 @@ * * **************************************************************************/ + public static int count = 0; + public TableColumnHeader(final TableView table, final TableColumn tc) { + System.out.println("count: " + ++count); this.column = tc; this.table = table;