對於TableColumn
值的設置,我不會解釋它,因爲它已經被回答過了,再加上你沒有問這個問題。您可以在How to set value to cell in TableView in javafx以及Google搜索中找到更多信息。我搜索了「javafx set tablecolumn value」
您應該有一個合適的數據模型Class
,它具有適合您的數據集的方法,您可以從數據庫中獲取該數據集。我不知道你的數據庫裏有什麼,所以我只是使用你在圖片中發佈的內容,即Item Name
,Priority
,Status
。
您當然可以將Circle
添加到您的TableView
,但應該在您的數據模型Class
中適當聲明。
有些事情你還需要我沒有提供:
- 你需要分析你的數據庫的回報,並進行相應的數據構造函數調用。我會讓你知道的。
好吧,現在我正在提供什麼和我做了什麼來實現它。
您將需要使用您的數據模型Class
來存儲您的數據庫返回信息,這就是爲什麼它的重要性在於使其設置正確。因此,對於您在返還時關心的每個數據點,應該有適當的set
和get
方法。
在您的返回數據循環中,您需要創建一個new DataModel(x, y, z, ...);
並將其添加到ObservableList<DataModel>
。
這裏是示範基地穿上你的圖片提供:
主。java的
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
TableView<Data> dataTable = new TableView<>();
TableColumn<Data, String> itemName = new TableColumn<>("Item Name");
itemName.setCellValueFactory(cell -> new SimpleStringProperty(cell.getValue().getName()));
TableColumn<Data, String> priority = new TableColumn<>("Priority");
priority.setCellValueFactory(cell -> new SimpleStringProperty(cell.getValue().getPriority()));
TableColumn<Data, Circle> status = new TableColumn<>("Status");
status.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue().getStatus()));
dataTable.getColumns().addAll(itemName, priority, status);
ObservableList<Data> data = FXCollections.observableArrayList();
Data high = new Data("toy", "high");
Data medium = new Data("box", "medium");
Data low = new Data("candy", "low");
data.addAll(high, medium, low);
dataTable.setItems(data);
Scene scene = new Scene(dataTable, 500, 500);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Data.java(這是我的數據模型)
public class Data {
private String name;
private String priority;
private Circle status;
public Data (String name, String priority){
setName(name);
setPriority(priority);
setStatus(priority);
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPriority(){
return priority;
}
public void setPriority(String priority){
this.priority = priority;
}
public Circle getStatus(){
return status;
}
public void setStatus(String priority){
Circle c = new Circle(5);
switch(priority){
case "high":
c.setFill(Color.GREEN);
break;
case "medium":
c.setFill(Color.YELLOW);
break;
case "low":
c.setFill(Color.RED);
break;
default:
}
status = c;
}
}
正如你所看到的,我沒有提供在Constructor
的status
,而是我用Priority
來確定它。
希望這會有所幫助。
我增加了更多的內容 - 如果你不介意看看 @HypnicJerk – jerry