0
点赞
收藏
分享

微信扫一扫

JavaFX TableView 使用 显示数据 增加 添加 删除 修改 更新 数据

橙子好吃吗 2023-02-01 阅读 87


推荐用法

package fx.com;

import javafx.application.Application;
import javafx.beans.Observable;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import javafx.util.Callback;

public class Main4 extends Application {
public static void main(String[] args) {
Application.launch(Main4.class,args);
}

@Override
public void start(Stage primaryStage) throws Exception {
Data2 d1= new Data2("A",15,70,true);
Data2 d2= new Data2("B",15,11,false);
Data2 d3= new Data2("C",18,100,true);
Data2 d4= new Data2("D",20,52,true);


ObservableList<Data2> list = FXCollections.observableArrayList();

//监听列表被改变
// ObservableList<Data2> list = FXCollections.observableArrayList(new Callback<Data2, Observable[]>() {
// @Override
// public Observable[] call(Data2 param) {
// System.out.println(param.getAgeProperty());
// return new Observable[0];
// }
// });
list.addAll(d1,d2,d3,d4);
TableView<Data2> tableView = new TableView<>(list);
TableColumn<Data2,String> tc_name = new TableColumn<>("姓名");
tc_name.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Data2, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<Data2, String> param) {
return param.getValue().getNameProperty();
}
});

TableColumn<Data2,Number> tc_age = new TableColumn<>("年龄");
tc_age.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Data2, Number>, ObservableValue<Number>>() {
@Override
public ObservableValue<Number> call(TableColumn.CellDataFeatures<Data2, Number> param) {
return param.getValue().getAgeProperty();
}
});

TableColumn<Data2,Number> tc_score = new TableColumn<>("分数");
tc_score.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Data2, Number>, ObservableValue<Number>>() {
@Override
public ObservableValue<Number> call(TableColumn.CellDataFeatures<Data2, Number> param) {
return param.getValue().getScoreProperty();
}
});
TableColumn<Data2,Boolean> tc_is = new TableColumn<>("is");
tc_is.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Data2, Boolean>, ObservableValue<Boolean>>() {
@Override
public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<Data2, Boolean> param) {
return param.getValue().getIsProperty();
}
});


tableView.getColumns().addAll(tc_name,tc_age,tc_score,tc_is);

Button button = new Button("button");
AnchorPane anchorPane = new AnchorPane();
anchorPane.setTopAnchor(tableView,100.0);
anchorPane.setLeftAnchor(tableView,100.0);
anchorPane.getChildren().addAll(button,tableView);
Scene scene = new Scene(anchorPane);
primaryStage.setScene(scene);
primaryStage.setWidth(800);
primaryStage.setHeight(800);
primaryStage.setTitle("网格布局");
primaryStage.getIcons().add(new Image("http://www.haotuo.net.cn/Resources/cq/qunlogo.png"));
primaryStage.show();


button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//增加
tableView.getItems().add(new Data2("小李",77,55,false));
//删除
tableView.getItems().remove(0);
//改
tableView.getItems().set(2,new Data2("小的",22,0,true));
d1.setAge(1);

}
});

}
}

类Data2

package fx.com;

import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;

public class Data2 {
private SimpleStringProperty name = new SimpleStringProperty();
private SimpleIntegerProperty age = new SimpleIntegerProperty();
private SimpleDoubleProperty score = new SimpleDoubleProperty();
private SimpleBooleanProperty is = new SimpleBooleanProperty( );

public Data2(String name, int age, double score, boolean is) {
this.name.set(name);
this.age.set(age);
this.score.set(score);
this.is.set(is);
}

public Data2() {

}

public String getName() {
return name.get();
}

public SimpleStringProperty nameProperty() {
return name;
}

public void setName(String name) {
this.name.set(name);
}

public int getAge() {
return age.get();
}

public SimpleIntegerProperty ageProperty() {
return age;
}

public void setAge(int age) {
this.age.set(age);
}

public double getScore() {
return score.get();
}

public SimpleDoubleProperty scoreProperty() {
return score;
}

public void setScore(double score) {
this.score.set(score);
}

public boolean isIs() {
return is.get();
}

public SimpleBooleanProperty isProperty() {
return is;
}

public void setIs(boolean is) {
this.is.set(is);
}
public SimpleStringProperty getNameProperty(){
return this.name;
}
public SimpleIntegerProperty getAgeProperty(){
return this.age;
}
public SimpleDoubleProperty getScoreProperty(){
return this.score;
}
public SimpleBooleanProperty getIsProperty(){
return this.is;
}
}

 

 

举报

相关推荐

0 条评论