账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JavaFx中如何对Table view中的数据绑定事件?
    58
    0

    可以举一个例子具体说明一下吗

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 女人要有范儿 普通会员 1楼

      在JavaFX中,你可以使用JavaFXTable和javafx.data.DataModel类来实现对Table view中的数据绑定事件。以下是一个简单的例子:

      ```java import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ValueEvent; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.TableColumn; import javafx.scene.control.TableModel; import javafx.scene.control.TableRow; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.scene.text.Text; import javafx.stage.Stage;

      public class Main extends Application {

      private final static String[] DATA = {"Apple", "Banana", "Cherry", "Date", "Elderberry"};
      
      @Override
      public void start(Stage primaryStage) {
          VBox root = new VBox();
          root.getChildren().addAll(new TableColumn("Apple"), new TableColumn("Banana"), new TableColumn("Cherry"), new TableColumn("Date"), new TableColumn("Elderberry"));
      
          // 添加数据模型
          final TableModel model = new TableModel();
          for (String fruit : DATA) {
              model.addRow(new Object[]{fruit});
          }
      
          // 创建数据绑定
          final ValueEvent坐下事件 = new ValueEvent<Void>() {
              @Override
              public Void evaluate() {
                  for (int i = 0; i < model.getItems().size(); i++) {
                      TableRow row = model.getItems().get(i);
                      row.setTableData(model.getItems());
                  }
                  return null;
              }
          };
          for (int i = 0; i < model.getItems().size(); i++) {
              TableColumn col = model.getItems().get(i);
              col.setPrefWidth(100);
              col.setCellValueFactory(new Function<String, Object>() {
                  @Override
                  public Object call(String fruit) {
                      return fruit;
                  }
              });
              col.setCellFactory(new DefaultTableRowCellFactory());
      
              // 添加坐下事件监听器
              col接听事件 = new ValueEvent<Void>() {
                  @Override
                  public Void evaluate() {
                      for (int i = 0; i < model.getItems().size(); i++) {
                          TableRow row = model.getItems().get(i);
                          row接听事件();
                      }
                      return null;
                  }
              };
              col接听事件.connect(col接听事件);
          }
      
          // 设置场景
          Scene scene = new Scene(root, 400, 200);
          primaryStage.setTitle("Table View");
          primaryStage.setScene(scene);
          primaryStage.show();
      }
      
      public static void main(String[] args) {
          launch(args);
      }
      

      } ```

      在这个例子中,我们首先创建了一个包含四个列的数据模型。然后,我们创建了一个数据绑定,该数据绑定将每个列的数据绑定到一个Row对象。我们还创建了一个坐下事件监听器,该监听器将当用户坐下时,更新每个列的数据。

      最后,我们设置了一个场景,并显示了这个场景。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部