5

テーブルビューポップアップに提案のドロップダウンを表示するオートコンプリートテキストを開発しようとしています.javafx 2.1でテーブルビューのヘッダー列全体を非表示にする方法の問題があります.

4

3 に答える 3

14

テーブルにカスタム スタイルシートを適用します。

table.getStylesheets().addAll(getClass().getResource("hidden-tableview-headers.css").toExternalForm());

このファイルhidden-tableview-headers.cssは、css リソースをロードするクラスと同じ場所に配置され、次の行が含まれています。

.column-header-background { visibility: hidden; -fx-padding: -1em; }

このvisibility: hidden属性は、JavaFX にノードを描画しないように指示しますが、見出しがあった場所にはスペースを残します。ヘッダーは 1 行の高さのテキストであるため、 を設定することで、非表示のヘッダーがスペースを占有しないように指定できます-fx-padding: -1em;

于 2012-09-07T20:15:06.497 に答える
5

解決策は非常に簡単です。テーブルビューがレンダリングされた後、テーブルヘッダーを取得して非表示にすることができるため、テーブルビューのレイアウトが変更されたときにテーブルヘッダーを再レイアウトする必要はありません。テーブルのレンダリングが行われたことをキャッチするには、widthプロパティの変更を使用して、テーブルヘッダーを非表示にします

コードは次のとおりです。

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);
            }
        }
    });
于 2012-09-17T18:31:44.800 に答える
0

追加の .css ファイルを追加したくない場合は、既存の css を使用できます。

.hide-header .column-header-background { 
    visibility: hidden; -fx-padding: -1em;
}

.hide-headerJavaコードに追加する必要があるランダムな名前はどこにありますか:

table.getStyleClass().add("hide-header");
于 2016-07-07T14:36:17.840 に答える