JavaFX - Matrix Builder - PullRequest
       4

JavaFX - Matrix Builder

0 голосов
/ 26 мая 2018

Я сформировал матрицу (в двух отдельных классах).я хотел бы сделать это:

, если я нажимаю на метку (например, метку [1] [2]) с содержимым 0, метка меняется на 1 и сохраняет новое значение в «целое число»(Num [1] [2]).и затем, когда я нажимаю на ярлык с содержимым 1, все происходит с той же функцией, но с 0.

Основной класс:

package application;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.BorderPane;


public class Main extends Application
{
    @Override
    public void start(Stage primaryStage) 
    {
        try 
        {
            Scene scene = new Scene(new RootBorderPane(),800,400);
            primaryStage.setScene(scene);
            primaryStage.setTitle("Graph");
            primaryStage.show();
        } 

        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    public static void main(String[] args)
    {
        launch(args);
    }

    public static void showAlert(AlertType alertType, String message)
    {
        Alert alert = new Alert(alertType, message, ButtonType.OK);
        alert.setHeaderText(null);
        alert.setTitle("Warning");
        alert.showAndWait();
    }
}

Класс пограничной области:

package application;


import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;


public class RootBorderPane extends BorderPane
{   
    private Label[][] label = new Label[15][15];
    private int[][] num = new int[15][15];
    private GridPane choiceGridPane;
    private int amount;
    private TextField textField;
    private Button button;
    private FlowPane flowPane;

    public RootBorderPane()
    {
        initComponents();
        addComponents();
        addHandlers();
    }

    private void initComponents()
    {
        choiceGridPane = new GridPane();
        choiceGridPane.setPadding(new Insets(20));

        button = new Button("ENTER");
        flowPane = new FlowPane(Orientation.VERTICAL);
        textField = new TextField("between 2-15");
    }

    private void addComponents()
    {
        flowPane.getChildren().addAll(textField,button);
        setRight(flowPane);
    }

    private void addHandlers()
    {
        button.setOnAction(e-> matrixBuilder());
    }

    private void matrixBuilder()
    {
        amount = Integer.parseInt(textField.getText());
        for(int i=0;i<amount;i++)
        {
            for(int j=0;j<amount;j++)
            {
                num[i][j]=0;
                label[i][j] = new Label(""+num[i][j]);
                label[i][j].setMinWidth(20);
                choiceGridPane.add(label[i][j], j+2, i+2);
            }
        }

        setCenter(choiceGridPane);
    }       
}

я написал этот код, но он снова не работает:

private void matrixBuilder()
{
    amount = Integer.parseInt(textField.getText());
    for(int i=0;i<amount;i++)
    {
        for(int j=0;j<amount;j++)
        {
            num[i][j]=0;
            label[i][j] = new Label(""+num[i][j]);
            label[i][j].setMinWidth(20);
            choiceGridPane.add(label[i][j], j+2, i+2);

            label[i][j].setOnMouseClicked(new EventHandler<MouseEvent>()
            {
                public void handle(MouseEvent t)
                {
                    if(num[i][j]==0)
                    {
                        num[i][j]=1;
                        label[i][j] = new Label(""+num[i][j]);
                    }
                    else
                    {
                        num[i][j]=0;
                        label[i][j] = new Label(""+num[i][j]);
                    }
                }
            });
        }
    }

    setCenter(choiceGridPane);
}

Ошибка:

локальная переменная, определенная в прилагаемой области видимости ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...