現在、このような機能はありません。実際、スクロールバーを操作してスクロールバーイベントに応答することさえ問題である。私は考えることができる2つのオプション: - :
<BorderPane prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<bottom>
<ScrollBar fx:id="hScroll" />
</bottom>
<center>
<HBox fx:id="varTable" prefHeight="100.0" prefWidth="200.0">
<children>
<TableView fx:id="fixedTable" prefHeight="200.0" prefWidth="200.0">
<columns>
<TableColumn prefWidth="75.0" text="Column X" />
<TableColumn prefWidth="75.0" text="Column X" />
</columns>
</TableView>
<TableView prefHeight="200.0" prefWidth="200.0" HBox.hgrow="ALWAYS">
<columns>
<TableColumn prefWidth="75.0" text="Column X" />
<TableColumn prefWidth="75.0" text="Column X" />
</columns>
</TableView>
</children>
</HBox>
</center>
<right>
<ScrollBar fx:id="vScroll" orientation="VERTICAL" />
</right>
</BorderPane>
オプション#1の複数の表
、2回の表と以下のFXMLスニペットのように2つのスクロールバーを含む新しいレイアウトを作成します。 2番目のタブにはHBox.hgrow = "ALWAYS"が設定されています。
テーブルビューのスクロールバー検索する機能を書く:
private static final ScrollBar getScrollBar(final TableView<?> tableView) {
for (final VirtualFlow virtualFlow: Nodes.filter(Nodes.descendents(tableView, 2), VirtualFlow.class)) {
for (final Node subNode: virtualFlow.getChildrenUnmodifiable()) {
if (subNode instanceof ScrollBar && ((ScrollBar)subNode).getOrientation() == Orientation.VERTICAL) {
return (ScrollBar)subNode;
}
}
}
return null;
}
などMIN、MAX、値のように(2垂直スクロールバーの位置を特定し、そのプロパティをバインドするためにこれを使用します)を独自の垂直スクロールバーに追加し、元のスクロールバーを非表示にします。また、レイアウトでスペースを取らないように、managed = falseを設定する必要があります。
水平スクロールバーを配置して非表示にし、「移動」テーブル水平スクロールバーのプロパティを独自の水平スクロールバーにバインドします。
this Jiraが修正されるのを待つ間に、このテクニックを使用して2つのテーブルを1つのスクロールバーでリンクすることができます。
オプション#2 - 書くあなた自身のTableViewSkin 彼らは皮膚をどうかを確認するJavaFXのソースをダウンロードして、あなたは完全なカスタムスキンを作成するか、2つの正規スキンを包む皮を書き、中に実装することができますいずれか上記のオプション1と同様の方法