举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > javafxgridpane单选按钮时间处理 JavaFX GridPane

javafxgridpane单选按钮时间处理 JavaFX GridPane

2023-03-20 10:18 Java教程

javafxgridpane单选按钮时间处理 JavaFX GridPane

javafxgridpane单选按钮时间处理

JavaFX GridPane单选按钮事件处理是一种常见的GUI应用,它可以帮助用户在界面上选择一个选项。在JavaFX中,可以使用GridPane来实现单选按钮事件处理。

GridPane是一种布局容器,可以将元素放置在行和列中。要使用GridPane来处理单选按钮事件,首先要创建一个GridPane对象:

GridPane grid = new GridPane();

然后,可以使用add()方法将单选按钮添加到GridPane中:

RadioButton rb1 = new RadioButton("Option 1"); 
RadioButton rb2 = new RadioButton("Option 2"); 
grid.add(rb1, 0, 0); 
grid.add(rb2, 0, 1);

最后,可以使用ToggleGroup对象来将这两个单选按钮连接起来:

ToggleGroup group = new ToggleGroup(); 
rb1.setToggleGroup(group); 
rb2.setToggleGroup(group);

当用户点击其中一个单选按钮时,就会触发ToggleGroup的selectedToggleChanged()方法。此方法会返回当前被选中的RadioButton对象。因此,可以使用该方法来处理单选按钮事件。例如:

group.selectedToggleProperty().addListener((observable, oldValue, newValue) -> { 
    if (newValue == rb1) { 
        // Do something when Option 1 is selected...
    } else if (newValue == rb2) { 
        // Do something when Option 2 is selected...
    } }); 

上述代码片段将监听器注册到ToggleGroup的selectedToggleProperty()方法上。当用户点击其中一个单选按钮时(也就是说当selectedToggleProperty()的值发生变化时),就会执行监听器里的代码。因此,就可以根据不同的情况执行不同的代码来处理单选框事件了。

JavaFX GridPane

JavaFX教程 - JavaFX GridPane


GridPane通常用于布局输入表单第一列上的只读标签和第二列上的输入字段。

GridPane可以在行,列或单元格级别指定约束。

例如,我们可以设置包含输入文本字段的第二列,以在窗口调整大小时调整大小。

例子

以下代码演示使用GridPane布局的简单表单应用程序。它有以下布局。

+------------------------+
| [label ] [   field   ] |
| [label ] [   field   ] |
|             [ button ] |
+------------------------+

源代码。

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
//www .  ja v  a  2  s  . c  om
public class Main extends Application {
  public static void main(String[] args) {
    Application.launch(args);
  }

  @Override
  public void start(Stage primaryStage) {
    BorderPane root = new BorderPane();
    Scene scene = new Scene(root, 380, 150, Color.WHITE);

    GridPane gridpane = new GridPane();
    gridpane.setPadding(new Insets(5));
    gridpane.setHgap(5);
    gridpane.setVgap(5);
    ColumnConstraints column1 = new ColumnConstraints(100);
    ColumnConstraints column2 = new ColumnConstraints(50, 150, 300);
    column2.setHgrow(Priority.ALWAYS);
    gridpane.getColumnConstraints().addAll(column1, column2);

    Label fNameLbl = new Label("First Name");
    TextField fNameFld = new TextField();
    Label lNameLbl = new Label("Last Name");
    TextField lNameFld = new TextField();

    Button saveButt = new Button("Save");

    // First name label
    GridPane.setHalignment(fNameLbl, HPos.RIGHT);
    gridpane.add(fNameLbl, 0, 0);

    // Last name label
    GridPane.setHalignment(lNameLbl, HPos.RIGHT);
    gridpane.add(lNameLbl, 0, 1);

    // First name field
    GridPane.setHalignment(fNameFld, HPos.LEFT);
    gridpane.add(fNameFld, 1, 0);

    // Last name field
    GridPane.setHalignment(lNameFld, HPos.LEFT);
    gridpane.add(lNameFld, 1, 1);

    // Save button
    GridPane.setHalignment(saveButt, HPos.RIGHT);
    gridpane.add(saveButt, 1, 2);

    root.setCenter(gridpane);
    primaryStage.setScene(scene);
    primaryStage.show();
  }
}

上面的代码生成以下结果。

null


实施例2

登录窗口


//package login;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Main extends Application {

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

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("JavaFX Welcome");
        GridPane grid = new GridPane();
        grid.setAlignment(Pos.CENTER);
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(25, 25, 25, 25));

        Text scenetitle = new Text("Welcome");
        scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
        grid.add(scenetitle, 0, 0, 2, 1);

        Label userName = new Label("User Name:");
        grid.add(userName, 0, 1);

        TextField userTextField = new TextField();
        grid.add(userTextField, 1, 1);

        Label pw = new Label("Password:");
        grid.add(pw, 0, 2);

        PasswordField pwBox = new PasswordField();
        grid.add(pwBox, 1, 2);

        Button btn = new Button("Sign in");
        HBox hbBtn = new HBox(10);
        hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
        hbBtn.getChildren().add(btn);
        grid.add(hbBtn, 1, 4);

        final Text actiontarget = new Text();
        grid.add(actiontarget, 1, 6);

        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent e) {
                actiontarget.setFill(Color.FIREBRICK);
                actiontarget.setText("Sign in button pressed");
            }
        });

        Scene scene = new Scene(grid, 300, 275);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

上面的代码生成以下结果。

null


阅读全文
以上是编程学为你收集整理的javafxgridpane单选按钮时间处理 JavaFX GridPane全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部