package com.ice.table.tableImage;
import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.util.Callback;
import com.ice.table.bean.User;
/**
* 在表格中显示图片
* @author Administrator
*
*/
public class TableImageTest extends Application {
// 表格数据
private ObservableList<User> tableData = FXCollections.observableArrayList(getTableData());
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
initPage(primaryStage);
}
private void initPage(Stage primaryStage){
ScrollPane root = new ScrollPane();
Scene scene = new Scene(root,600,600);
scene.getStylesheets().add(getClass().getResource("table3.css").toExternalForm());
// 设置布景背景色
scene.setFill(Color.CADETBLUE);
root.getStyleClass().add("root");
TableView<User> table = new TableView<User>();
table.setPrefWidth(450);
table.setPrefHeight(450);
table.getColumns().addAll(tableColumn());
table.setItems(tableData);
root.setContent(table);
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* 组装表格数据
* @return
*/
private List<User> getTableData(){
List<User> data = new ArrayList<User>();
for (int i = 0; i < 20; i++) {
User user = new User();
user.setId(i);
user.setName("小花ddddddddddddddddd" + i);
user.setAge(i+10);
user.setAdd("北京mmmmmmmmmmmmmmmmmm" + i);
data.add(user);
}
return data;
}
/**
* 表格域
* @param table
* @return
*/
public List<TableColumn<User, ?>> tableColumn(){
List<TableColumn<User, ?>> columns = new ArrayList<TableColumn<User, ?>>();
TableColumn<User, Integer> one = new TableColumn<User, Integer>("用户id");
one.setCellValueFactory(new PropertyValueFactory<>("id"));
columns.add(one);
TableColumn<User, String> two = new TableColumn<User, String>("用户名");
two.setCellValueFactory(new PropertyValueFactory<>("name"));
columns.add(two);
TableColumn<User, Integer> three = new TableColumn<User, Integer>("用户年龄");
three.setCellValueFactory(new PropertyValueFactory<>("age"));
/**
* 显示图片
*/
three.setCellFactory(new Callback<TableColumn<User, Integer>, TableCell<User, Integer>>() {
@Override
public TableCell<User, Integer> call(TableColumn<User, Integer> param) {
return new TableCell<User, Integer>() {
@Override
public void updateItem(Integer item, boolean empty) {
super.updateItem(item, empty);
if(!empty) {
System.out.println(item);
if (item%2==0) {
ImageView iv = new ImageView(getClass().getResource("yes.png").toExternalForm());
this.setGraphic(iv);
}else {
ImageView iv = new ImageView(getClass().getResource("no.png").toExternalForm());
this.setGraphic(iv);
}
}else {
this.setGraphic(null);
}
}
};
}
});
columns.add(three);
TableColumn<User, String> four = new TableColumn<User, String>("用户地址");
four.setCellValueFactory(new PropertyValueFactory<>("add"));
columns.add(four);
return columns;
}
}