tg.selectedToggleProperty().addListener(new ChangeListener<Toggle>() { @Override public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) { RadioButton r = (RadioButton) newValue; System.out.println("已选择:" + r.getText()); } });分析一下这段代码
时间: 2023-06-15 07:05:28 浏览: 140
这段代码为 JavaFX 中的代码,主要实现了对单选按钮组中选中的单选按钮进行监听,并在选中时打印出选中的单选按钮的文本。具体来说:
- `tg` 是一个单选按钮组的实例,通过调用 `selectedToggleProperty()` 方法可以获得当前选中的单选按钮。
- `addListener()` 方法为 `selectedToggleProperty()` 方法添加了一个监听器,用于监听选中的单选按钮的变化。
- 在 `changed()` 方法中,参数 `observable` 表示被监听的属性,`oldValue` 表示之前的值,`newValue` 表示当前的值。
- `newValue` 参数表示当前选中的单选按钮,首先需要将其转换为 `RadioButton` 类型。
- 最后,打印出选中的单选按钮的文本,即调用 `getText()` 方法获取其文本。
相关问题
分析一下c1.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { System.out.println("已经选择:" + newValue); } });
这段代码是JavaFX中的事件监听器,用于监听一个名为c1的复选框的选中状态是否发生改变。具体分析如下:
- `c1.selectedProperty()`:获取复选框的选中状态属性对象。
- `addListener(new ChangeListener<Boolean>() { ... })`:为选中状态属性对象添加一个监听器,该监听器实现了`ChangeListener`接口,用于监听选中状态属性对象的变化。
- `public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue)`:当选中状态属性对象的值发生改变时,该方法会被调用。该方法有三个参数:
- `observable`:选中状态属性对象。
- `oldValue`:选中状态属性对象改变前的值。
- `newValue`:选中状态属性对象改变后的值。
- `System.out.println("已经选择:" + newValue);`:打印出当前复选框的选中状态。如果复选框被选中,则输出"已经选择:true";如果复选框被取消选中,则输出"已经选择:false"。
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.*; import javafx.scene.layout.AnchorPane; import javafx.scene.text.Font; import javafx.stage.*; import javafx.scene.control.*; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws Exception { Button b1=new Button("账号登录"); b1.setPrefWidth(100); b1.setPrefHeight(20); b1.setStyle( "-fx-background-color: #B22222;"+ "-fx-text-fill: #FFFAFA;" ); Label label=new Label("账号 :"); Label label2=new Label("密码 :"); label.setFont(Font.font(13)); label2.setFont(Font.font(13)); TextField textField1=new TextField(); textField1.setPrefHeight(25); textField1.setPrefWidth(200); textField1.setFont(Font.font(12)); Tooltip tip=new Tooltip("请输入12位学号"); textField1.setPromptText("请输入12位学号"); tip.setFont(Font.font(10)); textField1.setTooltip(tip); PasswordField passwordField=new PasswordField(); passwordField.setPrefHeight(25); passwordField.setPrefWidth(200); Tooltip tooltip2=new Tooltip("请输入八位密码"); passwordField.setPromptText("请输入八位密码"); textField1.textProperty().addListener((new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (newValue.length()>12){ textField1.setText(oldValue); } } })); passwordField.textProperty().addListener((new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (newValue.length()>8){ passwordField.setText(oldValue); } } })); /*ImageView img = new ImageView(); Image image=new Image(getClass().getResourceAsStream("/image/iocn.jpg")); img.setImage(image);*/ passwordField.setTooltip(tooltip2); AnchorPane anchorPane=new AnchorPane(textField1); anchorPane.getChildren().add(passwordField); anchorPane.getChildren().add(b1); anchorPane.getChildren().addAll(label2,label); anchorPane.setTopAnchor(label,150.0); anchorPane.setLeftAnchor(label,140.0); anchorPane.setTopAnchor(label2,180.0); anchorPane.setLeftAnchor(label2,140.0); anchorPane.setTopAnchor(textField1,150.0); anchorPane.setLeftAnchor(textField1,180.0); anchorPane.setTopAnchor(passwordField,180.0); anchorPane.setLeftAnchor(passwordField,180.0); anchorPane.setTopAnchor(b1,220.0); anchorPane.setLeftAnchor(b1,220.0); Scene scene=new Scene(anchorPane); primaryStage.setHeight(500); primaryStage.setWidth(550); primaryStage.setScene(scene); primaryStage.show(); } }
这段代码是一个JavaFX的应用程序,用于创建一个窗口和一个按钮。其中,import语句用于导入JavaFX的相关类库,Application是JavaFX应用程序的基类,main方法是程序的入口,start方法是JavaFX应用程序的主要方法,用于创建和显示GUI界面。在start方法中,创建了一个Button对象,并设置了它的文本、宽度、高度和样式。其中,样式使用了CSS语法,用于设置按钮的背景颜色。整个程序的作用是创建一个简单的GUI界面,用于账号登录。
阅读全文