Java FXML GridPane.getRowIndex (source) всегда возвращает ноль при обработке события мыши в Scene Builder - PullRequest
0 голосов
/ 24 октября 2019

Я новичок в Java FXML. Я все еще учусь использовать Scene Builder 2.0 и классы контроллеров. Я не понимаю, почему возвращается null

@FXML
public void gridClick(MouseEvent e){
    Node source = (Node)e.getSource() ;
    Integer colIndex = grid.getColumnIndex(source);
    Integer rowIndex = grid.getRowIndex(source);
    System.out.println("Mouse entered cell ["+colIndex+","+rowIndex+"]");
}

Я инициализировал все ячейки сетки в SceneBuilder Панель сетки была создана в SceneBuilder Затем я создал опорные панели для каждой ячейки винициализация класса контроллера:

for(int row=0;row<numRows;row++){
    for(int col=0;col<numCols;col++){
        AnchorPane slot=new AnchorPane();
        slot.setStyle("-fx-border-color: black;-fx-border-width: 0.2;");
        grid.add(slot,col,row);
    }
}

Я не знаю, является ли это плохим подходом, но я пытаюсь учиться. Пожалуйста, помогите мне, как сделать это по-другому или почему это дает мне нулевое значение. Когда пользователь щелкает одну из ячеек сетки, т. Е. Они должны быть опорными панелями, я хочу, чтобы они щелкали опорную панель или строку и столбец ячеек сетки.

...