我的数据库有5个字段(UserName,Password,RePassword,Admin,NormalUser),基于我的数据库字段,我创建了一个包含Tableview的表单,其中包含UserName,Password,RePassword,Admin,NormalUser列。 管理员和用户名是布尔值,因为我想在用户类型之间做出区分。当我从数据库中获取数据时,我可以看到单词“False”和“True”,但我想在Admin和NormalUser列中显示复选框。我对如何编写这部分代码一无所知。我在互联网上搜索了一下,我发现了一个动态创建TableView的代码(所有列都有String类型),但是我没有修改它有三列String类型和两列带复选框(布尔类型)并制作它们在获取这两个列数据后选择。
import Scheduling.ConnectDBwithFunc;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.NodeOrientation;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.util.Callback;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Arrays;
class FillTableofUsers{
//TABLE VIEW AND DATA
private ObservableList<ObservableList> data;
//CONNECTION DATABASE
public TableView buildData(){
Connection c = null;
TableView tableview = new TableView();
tableview.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
data = FXCollections.observableArrayList();
try{
c = ConnectDBwithFunc.connect(c);
String SQL = "SELECT USERNAME, PASSWORD ,REPASSWORD, ADMIN ,
NORMALUSER from USERS";
//ResultSet
ResultSet rs = c.createStatement().executeQuery(SQL);
/**********************************
* TABLE COLUMN ADDED DYNAMICALLY *
**********************************/
ArrayList<String> tableTitr = new ArrayList<>
(Arrays.asList("UserName","Password"," RePassword" , "Password"
,"Admin","NormalUser"));
for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
//We are using non property style for making dynamic table
final int j = i;
TableColumn col = new TableColumn(tableTitr.get(i));
col.setCellValueFactory(new
Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
tableview.getColumns().addAll(col);
}
/********************************
* Data added to ObservableList *
********************************/
String[] rowInfo = new String[rs.getMetaData().getColumnCount()+1];
while(rs.next()){
//Iterate Row
ObservableList<String> row = FXCollections.observableArrayList();
for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
//Iterate Column
if (rs.getString(i)!=null)
rowInfo[i] = rs.getString(i);
else
rowInfo[i] = " ";
row.add(rowInfo[i]);
}
data.add(row);
}
//FINALLY ADDED TO TableView
tableview.setItems(data);
}catch(Exception e){
e.printStackTrace();
System.out.println("Error on Building Data");
}
return tableview;
}
}