我怎样才能只使用List
,ArrayList
或HashMap
在它使用的可观察列表中<Person>
以及每次新的Person()
初始化和表列相同PropertyValueFactory
。
我怎样才能使用:
private final ObservableList<Person> data =
FXCollections.observableArrayList( MyList/HashMap/ArrayList Here);
我很难弄清楚我在哪里犯了错误。
Oracle 文档在这里举了一个例子
private TableView<Person> table = new TableView<Person>();
private final ObservableList<Person> data =
FXCollections.observableArrayList(
new Person("Jacob", "Smith", "jacob.smith@example.com"),
new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
new Person("Ethan", "Williams", "ethan.williams@example.com"),
new Person("Emma", "Jones", "emma.jones@example.com"),
new Person("Michael", "Brown", "michael.brown@example.com"));
TableColumn emailCol = new TableColumn("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("email"));
table.setItems(data);
这是我的代码:
@FXML
private TableView<ObservableList> tableViewCOA = new TableView<ObservableList>();
@FXML
private TableColumn superTypeNameCol = new TableColumn();
@FXML
private TableColumn catagoryNameCol = new TableColumn();
@FXML
private TableColumn accountNameCol = new TableColumn();
@FXML
private TableColumn accountIDCol = new TableColumn();
final ObservableList<ObservableList> data = FXCollections.observableArrayList(
getAllCOA() //<-- myObservableListHere (refer to last method of jdbc)
);
superTypeNameCol.setCellValueFactory(
new PropertyValueFactory<COA,String>("superNameCol")
);
catagoryNameCol.setCellValueFactory(
new PropertyValueFactory<COA,String>("catagoryNameCol")
);
accountIDCol.setCellValueFactory(
new PropertyValueFactory<COA,String>("accountIDCol")
);
accountNameCol.setCellValueFactory(
new PropertyValueFactory<COA,String>("accountNameCol")
);
tableViewCOA.setItems(data);
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package accountsMain;
import javafx.beans.property.SimpleStringProperty;
/**
*
* @author u1
*/
public class COA{
private final SimpleStringProperty superNameCol;
private final SimpleStringProperty catagoryNameCol;
private final SimpleStringProperty accountNameCol;
private final SimpleStringProperty accountIDCol;
public COA(String superName,
String catagoryName,
String accountName,
String accountID
){
this.superNameCol = new SimpleStringProperty(superName);
this.catagoryNameCol = new SimpleStringProperty(catagoryName);
this.accountIDCol = new SimpleStringProperty(accountID);
this.accountNameCol = new SimpleStringProperty(accountName);
}
public String getSuperNameCol() {
return superNameCol.get();
}
public void setSuperNameCol(String superName) {
superNameCol.set(superName);
}
public String getCatagoryNameCol() {
return catagoryNameCol.get();
}
public void setCatagoryNameCol(String catagoryName) {
catagoryNameCol.set(catagoryName);
}
public String getAccountIDCol() {
return accountIDCol.get();
}
public void setAccountIDCol(String accountID) {
accountIDCol.set(accountID);
}
public String getAccountNameCol() {
return accountNameCol.get();
}
public void setAccountNameCol(String accountName) {
accountNameCol.set(accountName);
}
}
///////////////////////////// this is what returns -----myObservableList-------///////////////////////////////
public static ObservableList<ObservableList> getAllCOA() {
Connection con = null;
// HashMap rows = new HashMap();
ObservableList<ObservableList> rows = FXCollections.observableArrayList();
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://"+host+":3306/"+DBname, user, password);
PreparedStatement pStmt = con.prepareStatement(
"select "
+ "supercoa.superTypeName,"
+ "catagorycoa.catagoryName,"
+ "accountscoa.accountName,"
+ "accountscoa.account_id"
+ " FROM"
+ " supercoa,catagorycoa,accountscoa"
+ " WHERE"
+ " accountscoa.catagory_id = catagorycoa.catagory_id"
+ " group by accountscoa.accountName");
ResultSet rs = null;
rs = pStmt.executeQuery();
int i = 1;
while (rs.next()) {
// List singleRow = new ArrayList();
ObservableList<String> singleRow = FXCollections.observableArrayList();
String supertypeName = rs.getString("supertypeName"); singleRow.add(supertypeName);
String catagoryName = rs.getString("catagoryName"); singleRow.add(catagoryName);
String accountName = rs.getString("accountName"); singleRow.add(accountName);
String account_id = rs.getString("account_id"); singleRow.add(account_id);
//rows.put(i,singleRow);
//i++;
rows.add(singleRow);
}
pStmt.close();
con.close();
} catch (ClassNotFoundException | SQLException e) {
main.ErrorLogging.errorLog(e.toString());
}
return rows;
}
数据未出现,但表格显示为空白列