0

`A JavaFX program with a GridPane and 'regular' Pane were used both inside a StackPane. The GridPane has text fields and a button however they are not able to be interacted with for some reason.

This is the code:

package application;
    
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;

import java.util.Arrays;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Line;
import javafx.scene.shape.Polygon;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;
import javafx.scene.paint.Color;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        
        Label Appearances = new Label("Champions League Appearances: ");
        Label Goals = new Label("Champions League Goals: ");
        Label Assists = new Label("Champions League Assists: ");
        
        Label Ronaldo = new Label("  Ronaldo: ");
        Label Messi = new Label("  Messi: ");
        Label Lewandowski = new Label("  Lewandowski: ");
        Label Benzema = new Label("  Benzema: ");
        Label Raul = new Label("  Raúl: ");
        
        Label van_Nistelrooy = new Label("  van Nistelrooy: ");
        Label Muller = new Label("  Müller: ");
        Label Henry = new Label("  Henry: ");
        Label Ibrahimovic = new Label("  Ibrahimović: ");
        Label Shevchenko = new Label("  Shevchenko: ");

        
        TextField Txt1 = new TextField();
        TextField Txt2 = new TextField();
        TextField Txt3 = new TextField();
        
        TextField Txt4 = new TextField();
        TextField Txt5 = new TextField();
        TextField Txt6 = new TextField();
        
        TextField Txt7 = new TextField();
        TextField Txt8 = new TextField();
        TextField Txt9 = new TextField();
        
        TextField Txt10 = new TextField();
        TextField Txt11 = new TextField();
        TextField Txt12 = new TextField();
        
        TextField Txt13 = new TextField();
        TextField Txt14 = new TextField();
        TextField Txt15 = new TextField();
        
        TextField Txt16 = new TextField();
        TextField Txt17 = new TextField();
        TextField Txt18 = new TextField();
        
        TextField Txt19 = new TextField();
        TextField Txt20 = new TextField();
        TextField Txt21 = new TextField();
        
        TextField Txt22 = new TextField();
        TextField Txt23 = new TextField();
        TextField Txt24 = new TextField();
        
        TextField Txt25 = new TextField();
        TextField Txt26 = new TextField();
        TextField Txt27 = new TextField();
        
        TextField Txt28 = new TextField();
        TextField Txt29 = new TextField();
        TextField Txt30 = new TextField();
        

        GridPane grid = new GridPane();
                grid.setAlignment(Pos.CENTER_LEFT);
        grid.setHgap(10);
        grid.setVgap(10);
        
        grid.add(Appearances, 1, 0);
        grid.add(Goals, 2, 0);
        grid.add(Assists, 3, 0);
        
        grid.add(Ronaldo, 0, 1);
        grid.add(Messi, 0, 2);
        grid.add(Lewandowski, 0, 3);
        grid.add(Benzema, 0, 4);
        grid.add(Raul, 0, 5);
        grid.add(van_Nistelrooy, 0, 6);
        grid.add(Muller, 0, 7);
        grid.add(Henry, 0, 8);
        grid.add(Ibrahimovic, 0, 9);
        grid.add(Shevchenko, 0, 10);
        
        grid.add(Txt1, 1, 1);
        Txt1.setAlignment(Pos.CENTER);
        grid.add(Txt2, 2, 1);
        Txt2.setAlignment(Pos.CENTER);
        grid.add(Txt3, 3, 1);
        Txt3.setAlignment(Pos.CENTER);
        
        grid.add(Txt4, 1, 2);
        Txt4.setAlignment(Pos.CENTER);
        grid.add(Txt5, 2, 2);
        Txt5.setAlignment(Pos.CENTER);
        grid.add(Txt6, 3, 2);
        Txt6.setAlignment(Pos.CENTER);
        
        grid.add(Txt7, 1, 3);
        Txt7.setAlignment(Pos.CENTER);
        grid.add(Txt8, 2, 3);
        Txt8.setAlignment(Pos.CENTER);
        grid.add(Txt9, 3, 3);
        Txt9.setAlignment(Pos.CENTER);
        
        
        grid.add(Txt10, 1, 4);
        Txt10.setAlignment(Pos.CENTER);
        grid.add(Txt11, 2, 4);
        Txt11.setAlignment(Pos.CENTER);
        grid.add(Txt12, 3, 4);
        Txt12.setAlignment(Pos.CENTER);
        
        grid.add(Txt13, 1, 5);
        Txt13.setAlignment(Pos.CENTER);
        grid.add(Txt14, 2, 5);
        Txt14.setAlignment(Pos.CENTER);
        grid.add(Txt15, 3, 5);
        Txt15.setAlignment(Pos.CENTER);
        
        grid.add(Txt16, 1, 6);
        Txt16.setAlignment(Pos.CENTER);
        grid.add(Txt17, 2, 6);
        Txt17.setAlignment(Pos.CENTER);
        grid.add(Txt18, 3, 6);
        Txt18.setAlignment(Pos.CENTER);
        
        
        grid.add(Txt19, 1, 7);
        Txt19.setAlignment(Pos.CENTER);
        grid.add(Txt20, 2, 7);
        Txt20.setAlignment(Pos.CENTER);
        grid.add(Txt21, 3, 7);
        Txt21.setAlignment(Pos.CENTER);
        
        
        grid.add(Txt22, 1, 8);
        Txt22.setAlignment(Pos.CENTER);
        grid.add(Txt23, 2, 8);
        Txt23.setAlignment(Pos.CENTER);
        grid.add(Txt24, 3, 8);
        Txt24.setAlignment(Pos.CENTER);
        
        
        grid.add(Txt25, 1, 9);
        Txt25.setAlignment(Pos.CENTER);
        grid.add(Txt26, 2, 9);
        Txt26.setAlignment(Pos.CENTER);
        grid.add(Txt27, 3, 9);
        Txt27.setAlignment(Pos.CENTER);
        
        
        grid.add(Txt28, 1, 10);
        Txt28.setAlignment(Pos.CENTER);
        grid.add(Txt29, 2, 10);
        Txt29.setAlignment(Pos.CENTER);
        grid.add(Txt30, 3, 10);
        Txt30.setAlignment(Pos.CENTER);

        
        Pane BarGraph = new Pane();

        
        ObservableList list = BarGraph.getChildren();
        
        Line lin = new Line(630,450,1260,450); 
        Rectangle RonaldoApps = new Rectangle(630,400,50,50);
        RonaldoApps.setFill(Color.DARKBLUE);
        
        
        list.addAll(lin,RonaldoApps);
       

        StackPane rootPane = new StackPane(grid, BarGraph);
        
        Button SaveData = new Button("Save Changes");
        SaveData.setOnAction(e ->{
            double RonApps = Double.parseDouble(Txt1.getText().toString());
            RonaldoApps.setHeight(RonApps);
            
        });
        grid.add(SaveData, 3, 11);
        
        Scene scene = new Scene(rootPane, 1275, 570);
        primaryStage.setTitle("CSC226 Project - All-Time UEFA Champions League Statistics");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {launch(args);}
    
    
}

I have tried to change the positioning of the grid and tried to change the types of panes but it did not work.`

Ahmed02
  • 1
  • 2

1 Answers1

-1

Instead of using a Pane for BarGraph you could use a Group instead. Using a Pane does not make much sense here anyway and just triggers the problem you are seeing.

mipa
  • 10,369
  • 2
  • 16
  • 35
  • 1
    Please don't do this. Use literally anything other than Group. Pick a proper layout class and use it. The problem here is that StackPane was used. Depending on how the OP wants to display it, either HBox or VBox would solve the problem. But not Group. – DaveB Jan 02 '23 at 21:06