私のプロジェクトでは、5つの列を持つTreeTableViewがあります。 すべての列に異なるコンテキストメニューが必要です。 すべての列(この例では「値」列の1つしか表示されません)に対してContextMenuをソースビルダで作成しましたが、menuは列ヘッダーを右クリックすると表示されますが、menùは右クリックして表示する必要がありますセル値JavaFX TreeTableViewとContextMenu
<TreeTableView fx:id="valueTable" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<columns>
<TreeTableColumn fx:id="context" prefWidth="483.20001524686813" sortable="false" text="Context" />
<TreeTableColumn fx:id="tag" minWidth="50.0" prefWidth="90.0" sortable="false" text="Tag" />
<TreeTableColumn fx:id="offset" minWidth="50.0" prefWidth="90.0" sortable="false" text="OffSet" />
<TreeTableColumn fx:id="lenght" minWidth="50.0" prefWidth="90.0" sortable="false" text="Lenght" />
<TreeTableColumn fx:id="value" prefWidth="367.99993896484375" sortable="false" text="Value">
<contextMenu>
<ContextMenu fx:id="contextMenuValue" >
<items>
<MenuItem mnemonicParsing="false" text="Action 1" />
<MenuItem mnemonicParsing="false" text="Action 2" />
<MenuItem mnemonicParsing="false" text="Action 3" />
<MenuItem mnemonicParsing="false" text="Action 4" />
</items>
</ContextMenu>
</contextMenu>
</TreeTableColumn>
</columns>
</TreeTableView>
私はMouseClickとイベントをチェックするためにこのコードを追加しようとしますが、イベントがTreeTableColumn「値」に「valueTable」のみTreeTableViewに傍受されていません。
value.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent e) -> {
System.out.println("Work Cell");
});
valueTable.addEventHandler(MouseEvent.MOUSE_CLICKED, (MouseEvent e) -> {
System.out.println("Work Table");
});
私を助けてくれますか? Reg35。
で解決なかった:「機能を追加することなく、拡張しない」==のContextMenuのサブの必要性を、代わりのMenuItemを追加することによって、それを設定 – kleopatra
はいます」彼はそれをカスタマイズしたいのであれば拡張しましたが、あなたが言いましたように、あなたが私のようにこの方法を使用しているならば、それを拡張することは役に立たないのです。 – Sunflame
ありがとう、仕事。 しかし、質問:TreeItemのマウスクリックを傍受する方法は? セル値に基づいてメニュー項目を無効/有効にするには、これを傍受する必要があります。 – SirLancillotto