こんにちは、Gridpaneでクリックされたノード(セル)を取得する方法については、多くのソリューションをオンラインで試してみました。ノードを取得する方法は次のとおりです。私はまた、このメソッドの前にすべてのノードを反復処理することを試みました。私はscenebuilderでグリッドペインを構築しました。下の図のように、列と行がはっきりと表示されています。私はこの解決策を試していますが、上で述べたように、行と列から返される値はnullです。JavaFXのGridPaneの列と行のインデックスにアクセスするとNULLが返され続ける
@FXML
private void mouseEntered(MouseEvent e) {
Node source = (Node)e.getSource() ;
System.out.println(source);
Integer colIndex = userSelectionGrid.getColumnIndex(source);
Integer rowIndex = userSelectionGrid.getRowIndex(source);
if (colIndex == null && rowIndex == null) System.out.println("BOO");
else
System.out.printf("Mouse entered cell [%d, %d]%n", colIndex.intValue(), rowIndex.intValue());
}
このグリッドを含むFXML
<GridPane fx:id="userSelectionGrid" onMouseClicked="#mouseEntered" prefHeight="44.0" prefWidth="563.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="SAVE" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="0">
<font>
<Font name="System Bold" size="13.0" />
</font>
</Label>
<Label text="CANCEL" GridPane.columnIndex="0" GridPane.halignment="CENTER" GridPane.rowIndex="0">
<font>
<Font name="System Bold" size="13.0" />
</font>
</Label>
<Separator orientation="VERTICAL" GridPane.columnIndex="1" />
</children>
<VBox.margin>
<Insets />
</VBox.margin>
</GridPane>
HAVA:それらはあなたがそれらのノードでイベントをキャッチすることができます
GridPane
レイアウト、上の影響を受けることなく、細胞とサイズを変更することができますか? – fabian私はまだこれは本当に新しいですが、私はあなたがscenebuilderでmouseEnteredメソッドをどこに追加したかを尋ねていると仮定しています。グリッドのコードセクションの下で、私はonMouseClickedメソッドでそれを追加しました –