在 JavaFX 中为 ChoiceBox 设置动作监听器(行为)的示例

javafxobject oriented programmingprogramming更新于 2024/11/7 22:31:00

选择框包含一组多个选项,允许您仅选择其中一个。这将具有两种状态:显示不显示。显示时,您可以在选择框中看到选项列表;不显示时,它会显示当前选项。默认情况下,选择框中未选择任何选项。

在 JavaFX 中,选择框由类 javafx.scene.control.ChoiceBox<T> 表示。您可以通过实例化此类来创建选择框。

此类的 selectionModel 属性保存当前选择框的选择模型,您可以使用 getSelectionModel() 方法(始终为 SingleSelectionModel)获取其值。

SelectionModel 类有两个属性,即 selectedIndexselectedItem,分别指定选定索引和选定项目。要在选择项目时执行操作,您可以通过使用 addListener() 方法将操作侦听器添加到这两个属性之一来实现,如下所示 −

getSelectionModel().selectedIndexProperty().addListener()
or,
getSelectionModel().selectedItemProperty().addListener()

示例

import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class ChoiceBoxAction extends Application {
   public void start(Stage stage) {
      //创建选择框
      ChoiceBox<String> choiceBox = new ChoiceBox<String>();
      //检索可观察列表
      ObservableList<String> list = choiceBox.getItems();
      //将项目添加到列表
      list.add("English");
      list.add("Hindi");
      list.add("Telugu");
      //设置选择框的位置
      choiceBox.setTranslateX(200);
      choiceBox.setTranslateY(15);
      //设置标签
      Label label = new Label("选择显示语言:");
      Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12);
      label.setFont(font);
      label.setTranslateX(20);
      label.setTranslateY(20);
      //设置消息文本
      Text text = new Text(25.0, 130.0, "");
      text.setFont(Font.font("Britannic Bold", 33));
      text.setFill(Color.BROWN);
      String language[] = new String[]{
         "Welcome to Tutorilaspoint",
         "टुटोरियल्स पॉइन्ट को आप का स्वागत है",
         "ట్యూ టోరియల్స్ పాయింట్ కి స్వా గతిం"
      };
      //将操作添加到选择框
      choiceBox.getSelectionModel().selectedIndexProperty().addListener(
         (ObservableValue<? extends Number> ov, Number old_val, Number new_val) ->> {
            text.setText(language[new_val.intValue()]);
      });
      //将选择框添加到组中
      Group root = new Group(choiceBox, label, text);
      //设置舞台
      Scene scene = new Scene(root, 595, 170, Color.BEIGE);
      stage.setTitle("选择框示例");
      stage.setScene(scene);
      stage.show();
   }
    public static void main(String args[]){
      launch(args);
   }
}

输出

选择英语时 −

选择印地语时 −

选择泰卢固语时 −


相关文章