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()的值发生变化时),就会执行监听器里的代码。因此,就可以根据不同的情况执行不同的代码来处理单选框事件了。
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(); } }
上面的代码生成以下结果。
登录窗口
//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(); } }
上面的代码生成以下结果。
Java 实例 - 集合转数组 Java 实例以下实例演示了如何使用 Java Util 类的 list.add() 和 list.toArray() 方法将集合转为数组:i...
Java lastIndexOf() 方法JavaString类lastIndexOf() 方法有以下四种形式:public int lastIndexOf(int ch): 返回指定字符在此字...