JavaFX单选按钮不起作用(无法选择)

时间:2019-02-17 14:13:59

标签: java javafx

我想创建一个转换不同基准的项目,但是我的单选按钮不起作用。我正在制作三个不同的VBox,以添加Button,但是只有第三列在工作。我对JavaFX非常陌生,所以如果有人可以帮助我,我将不胜感激。谢谢!这是我的代码

Start

程序在这里(应该)看起来像Appliaction

1 个答案:

答案 0 :(得分:1)

我相信您使用StackPane可能会阻止鼠标事件在您的RadioButtons上注册。

虽然我通常不这样做,但是下面是重新配置的布局,您可以将其用作代码的起点。我已经简化了布局,并且所有RadioButtons都可以正常运行:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class scratch_1 extends Application {

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

    @Override
    public void start(Stage primaryStage) throws Exception {

        VBox root = new VBox(10);
        root.setAlignment(Pos.CENTER);
        root.setPadding(new Insets(10));

        Label lblTitle = new Label("Gib die Basis und die Zahl ein!");
        root.getChildren().add(lblTitle);

        // The input TextField
        TextField txtInput = new TextField();
        root.getChildren().add(txtInput);

        // HBox to hold our three columns
        HBox hBoxSelections = new HBox(20);
        hBoxSelections.setAlignment(Pos.CENTER);

        // Use a GridPane for our RadioButton grid
        GridPane gridSelections = new GridPane();
        gridSelections.setAlignment(Pos.CENTER);
        gridSelections.setHgap(10);
        gridSelections.setVgap(5);

        // Our ToggleGroup to which all RadioButtons will belong
        ToggleGroup groupSelections = new ToggleGroup();

        // We need 11 rows of 3 RadioButtons, let's use a couple of for loops to populate the GridPane
        int counter = 2;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 3; j++) {
                RadioButton radioButton = new RadioButton("" + counter);
                radioButton.setToggleGroup(groupSelections);

                gridSelections.add(radioButton, j, i);
                counter++;
            }
        }

        // Let's add the GridPane to our root layout
        root.getChildren().add(gridSelections);

        primaryStage.setScene(new Scene(root, 400, 400));
        primaryStage.show();
    }
}
  

结果:

screenshot


请注意,我是根据您以前的代码发布工作的,因此,以上示例不包含您的update()方法(或任何逻辑)。