Попытка добавить кнопку в VBox в JavaFX - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь создать простую программу для ножниц из каменной бумаги, но у меня возникают проблемы с добавлением чего-либо на панель. Я когда делаю pane.getChildren (). Add (goButton); он не компилируется и говорит, что его нельзя применить. Я уверен, что это просто, но мой код выглядит так же, как в Интернете.

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.event.*;
import java.awt.*;

public class Main extends Application {

//    private String[] answers = {"rock", "paper", "scissors"};
//    private TextField userOutputTF, compOutputTF;
//    private Button goButton;
//    private Label title;
//    private VBox pane;

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

        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 500, 500));
        primaryStage.setTitle("Rock, Paper, Scissors");

        VBox pane = new VBox();
        pane.setAlignment(Pos.CENTER);

        String[] answers = {"rock", "paper", "scissors"};

        Button goButton = new Button("Go");
        pane.getChildren().add(goButton);

        TextField userOutputTF = new TextField("Enter rock, paper, or scissors");
        TextField compOutputTF = new TextField("");

        compOutputTF.setEditable(false);
        userOutputTF.setEditable(true);

        goButton.addActionListener(e -> {
            System.out.println("Handled Lambda listener");
            System.out.println("Have fun!");
        });

        primaryStage.show();
    }


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


    public void Deal() {
        System.out.println("Hi");
    }
}

1 Ответ

2 голосов
/ 16 апреля 2019

Вы используете элементы управления AWT.Измените импорт, чтобы использовать элементы управления javafx, вам также нужно изменить прослушиватель кнопок:

package sample;

import javafx.application.Application; 
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;

public class Sample extends Application {

//    private String[] answers = {"rock", "paper", "scissors"};
//    private TextField userOutputTF, compOutputTF;
//    private Button goButton;
//    private Label title;
//    private VBox pane;

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

    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 500, 500));
    primaryStage.setTitle("Rock, Paper, Scissors");

    VBox pane = new VBox();
    pane.setAlignment(Pos.CENTER);

    String[] answers = {"rock", "paper", "scissors"};

    Button goButton = new Button("Go");
    pane.getChildren().add(goButton);

    TextField userOutputTF = new TextField("Enter rock, paper, or scissors");
    TextField compOutputTF = new TextField("");

    compOutputTF.setEditable(false);
    userOutputTF.setEditable(true);

    goButton.onMouseClickedProperty().addListener((obs, oldValue, newValue) -> {
        System.out.println("Handled Lambda listener");
        System.out.println("Have fun!");
    });

        primaryStage.show();
    }

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


    public void Deal() {
        System.out.println("Hi");
    }
}

Вам также необходимо добавить VBox в какой-либо другой контейнер внутри FXML или просто добавить его в корень.

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