2024/06/28笔记随笔

对话框使用

  • 添加信息:````plaintext
    public void initialize(URL url, ResourceBundle resourceBundle) {
    //设置表格的列名和模型数据属性名关联
    classId.setCellValueFactory(new PropertyValueFactory<>("id"));
    className.setCellValueFactory(new PropertyValueFactory<>("name"));
    classTeacher.setCellValueFactory(new PropertyValueFactory<>("teacher"));
    classNum.setCellValueFactory(new PropertyValueFactory<>("num"));

      //创建表格数据
      ObservableList<ClassModel> data = FXCollections.observableArrayList(
              new ClassModel("101", "语文", "张老师", "30"),
              new ClassModel("102", "数学", "李老师", "25"),
              new ClassModel("103", "数学", "李老师", "25"),                new ClassModel("103", "英语", "王老师", "20"),
              new ClassModel("104", "物理", "赵老师", "25"),
              new ClassModel("105", "英语", "李老师", "20")
      );
    
      //设置表格数据
      classTable.setItems(data);
    

* 修改数据:````plaintext
//选择修改的模型数据
    private ClassModel selectedClass;

    //修改按钮事件处理方法
    @FXML
    void onModifyClassHandle(ActionEvent event) {
        //判断用户是否选中表格修改记录
        if (selectedClass == null) {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("提示");
            alert.setHeaderText("请先选择要修改的记录!");
            alert.showAndWait();
            return;
        }

        //TODO 弹出修改对话框,修改数据
        // 创建一个带有确认和取消按钮的对话框
        Dialog<String> dialog = new Dialog<>();
        dialog.setTitle("修改班级");

        // 设置对话框的内容
        VBox dialogVbox = new VBox(10); // 间距为 10

        //修改班级内容控件

        //班级ID
        HBox classIdBox = new HBox();
        Label classIdLabel = new Label("班级ID:");
        TextField classIdField = new TextField(selectedClass.getId());
        classIdField.setEditable(false);
        classIdBox.getChildren().addAll(classIdLabel, classIdField);

        //班级名称
        HBox classNameBox = new HBox();
        Label classNameLabel = new Label("班级名称:");
        TextField classNameField = new TextField(selectedClass.getName());
        classNameBox.getChildren().addAll(classNameLabel, classNameField);

        //班级教师
        HBox classTeacherBox = new HBox();
        Label classTeacherLabel = new Label("班级教师:");
        TextField classTeacherField = new TextField(selectedClass.getTeacher());
        classTeacherBox.getChildren().addAll(classTeacherLabel, classTeacherField);

        //班级人数
        HBox classNumBox = new HBox();
        Label classNumLabel = new Label("班级人数:");
        TextField classNumField = new TextField(selectedClass.getNum());
        classNumBox.getChildren().addAll(classNumLabel, classNumField);

        //将 班级名称 布局添加到vBox布局中
        dialogVbox.getChildren().add(classNameBox);

        //将 班级教师 布局添加到vBox布局中
        dialogVbox.getChildren().add(classTeacherBox);

        //将 班级人数 布局添加到vBox布局中
        dialogVbox.getChildren().add(classNumBox);

        //将 班级ID 布局添加到vBox布局中
        dialogVbox.getChildren().add(classIdBox);

        // 创建按钮类型
        ButtonType okButton = new ButtonType("确认", ButtonBar.ButtonData.OK_DONE);
        ButtonType cancelButton = new ButtonType("取消", ButtonBar.ButtonData.CANCEL_CLOSE);
        dialog.getDialogPane().getButtonTypes().addAll(okButton, cancelButton);

        // 设置对话框按钮的事件处理器
        dialog.setResultConverter(dialogButton -> {
            if (dialogButton == okButton) {
                return "User clicked See";
            }
            return null;
        });

        // 设置对话框的布局
        dialog.getDialogPane().setContent(dialogVbox);

        // 显示对话框
        dialog.showAndWait().ifPresent(result -> {
            System.out.println("Dialog result: " + result);
            //获取修改数据模型
            ClassModel classModel = new ClassModel(classIdField.getText(), classNameField.getText(), classTeacherField.getText(), classNumField.getText());
            System.out.println(classModel);
        });
    }
  • 设置监听器保存数据:````plaintext
    // 为 TableView 添加选择监听器
    classTable.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue != null) {
    System.out.println("选择表记录: " + newValue);
    //保存要修改的数据
    selectedClass = newValue;
    }
    });
posted @ 2024-06-28 11:22  ZxKing  阅读(36)  评论(0)    收藏  举报