-1

I hope this is the last post I open about this.. I have tried everything but my coord on GridPane return always null and not Integer...

This is not a thread like this, it is a specific question, so please, don't close or do other actions. I have to solve this problem.

My actual condition: Project othello Scene Builder Here is my code. My question is.. Why when i click on myGrid(GridPane) it returns always 'null' ? Thank you..

My method clickGrid Here my controller in FXML:

Controller's name

Alberto32
  • 229
  • 1
  • 4
  • 14
  • 1
    Please take out the images and post code snippets of relevant methods. Images can go away after a time and are hard to read. – Hypnic Jerk Jul 21 '17 at 15:28
  • 2
    Post code as text not as image. There is no information in the image the code would not provide... Furthermore also post the part containing the controller field as well as the relevant parts of the fxml file (as code)... – fabian Jul 21 '17 at 15:37
  • 2
    Explain how this is different to the [question you posted earlier](https://stackoverflow.com/q/45219540/2189127). Is the event handler now registered with a different node, or is it still registered with the grid pane? – James_D Jul 21 '17 at 15:40

1 Answers1

1

Are you adding some type of Node to your GridPane? In this sample app StackPanes are added to each Grid. The same event handler is registered on all the StackPanes.

Main

package javafxapplication147;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author blj0011
 */
public class JavaFXApplication147 extends Application
{

    @Override
    public void start(Stage stage) throws Exception
    {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        launch(args);
    }

}

Controller

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.GridPane;

/**
 *
 * @author blj0011
 */
public class FXMLDocumentController implements Initializable
{

    @FXML
    private Label lblMain;

    @FXML
    private void handleOnMouseClicked(MouseEvent event)
    {
        Node source = (Node)event.getSource();
        Integer colIndex = (GridPane.getColumnIndex(source) == null) ?  0 : (GridPane.getColumnIndex(source));
        Integer colRow = (GridPane.getRowIndex(source) == null) ? 0 : (GridPane.getRowIndex(source));
        lblMain.setText(colIndex + " : " + colRow);
    }

    @Override
    public void initialize(URL url, ResourceBundle rb)
    {
        // TODO
    }    

}

FXML

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="javafxapplication147.FXMLDocumentController">
   <children>
      <VBox layoutX="48.0" layoutY="14.0" prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="0.0">
         <children>
            <GridPane gridLinesVisible="true" style="-fx-background-color: green;">
              <columnConstraints>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                  <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                  <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                  <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
              </columnConstraints>
              <rowConstraints>
                  <RowConstraints minHeight="100.0" prefHeight="100.0" vgrow="SOMETIMES" />
                <RowConstraints minHeight="100.0" prefHeight="100.0" vgrow="SOMETIMES" />
                <RowConstraints minHeight="100.0" prefHeight="100.0" vgrow="SOMETIMES" />
                <RowConstraints minHeight="100.0" prefHeight="100.0" vgrow="SOMETIMES" />
                  <RowConstraints minHeight="100.0" prefHeight="100.0" vgrow="SOMETIMES" />
              </rowConstraints>
               <VBox.margin>
                  <Insets top="10.0" />
               </VBox.margin>
               <children>
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="1" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="2" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="3" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.rowIndex="1" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="1" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.rowIndex="2" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="2" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="2" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.rowIndex="3" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="3" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="3" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="3" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.rowIndex="4" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="4" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="4" />
                  <StackPane onMouseClicked="#handleOnMouseClicked" prefHeight="150.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="4" />
               </children>
            </GridPane>
            <StackPane prefHeight="150.0" prefWidth="200.0">
               <children>
                  <Label fx:id="lblMain" text="Label" />
               </children>
            </StackPane>
         </children>
      </VBox>
   </children>
</AnchorPane>
SedJ601
  • 12,173
  • 3
  • 41
  • 59