【发布时间】:2021-09-03 04:18:24
【问题描述】:
我只是对 JavaFX TableView 组件有问题。
我想根据数据库表名更改新的 TableView 列标题。我不想在我的列中使用数据库表数据名称。
现在我的代码是
public static void OpenMySQLDB(String tablenameid, TableView<?> hallintaTable)
{
hallintaTable.getColumns().clear();
String sql = "select * from" + " " + tablenameid;
ObservableList data = FXCollections.observableArrayList();
try{
MySqlConnect mysqlConnect = new MySqlConnect();
Statement stmt = mysqlConnect.connect().createStatement();
//ResultSet
ResultSet rsHaku = stmt.executeQuery(sql);
for(int i=0 ; i<rsHaku.getMetaData().getColumnCount(); i++){
int j = i;
TableColumn col= new TableColumn(rsHaku.getMetaData().getColumnName(i+1));
col.setCellValueFactory((Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>) param -> new SimpleStringProperty(param.getValue().get(j).toString()));
hallintaTable.getColumns().addAll(col);
}
while(rsHaku.next()){
ObservableList<String> row = FXCollections.observableArrayList();
for(int i=1 ; i<=rsHaku.getMetaData().getColumnCount(); i++){
row.add(rsHaku.getString(i));
}
data.add(row);
}
hallintaTable.setItems(data);
}catch(Exception e){
e.printStackTrace();
}
}
我在 TableView 列中列出了我想要的内容
它的 dcode 在这里:
public static String[] admincomboValidator(String tablenameid) {
String[] openadminTableName = new String[0];
switch (tablenameid) {
case "AJOJARJESTELY" -> openadminTableName = new String[]{"ID", "Tunnus", "Salasana"};
case "GOOGLEMAP" -> openadminTableName = new String[]{"Reknro", "Merkki", "Hinta", "Kilometrit", "Renkaat kpl/hinta", "Vuokra/kk.", "AbaxID", "Huoltoväli", "Rengasmäärä"};
case "KULJETTAJAT" -> openadminTableName = new String[]{"Kuljetusetäisyys km", "Ajosuorite km/p", "Ajopäivät /v", "Pitoaika/v", "Polttoaine l/100km", "ADBlue l/100km", "Renkaatkesto/km", "Keikka-aika h/k", "Keikkamäärä /kpl", "Apuaika %", "Palkka /h", "AutoID"};
case "LAHETTAJA" -> openadminTableName = new String[]{"ID", "Poisto %", "Pääomakorko %", "Käyttöpääomakorko %", "Vakuutukset €/v", "Liikennöintimaksut €/v", "Hallintokustannukset €/v", "Ylläpitokustannukset €/v", "Muuajo km/v"};
case "VASTAAOTTAJA" -> openadminTableName = new String[]{"ID", "Polttoaine €/l", "ADBlue €/l", "Voiteluaine €/%", "Korjaus €/%", "Muu tieto"};
default -> System.out.println("Tietoja ei löydy");
}
return openadminTableName;
}
所以主要返回openadminTableName什么是String[] openadminTableName = new String[0];
在 Java Swing JTable 中是这样工作的:
DefaultTableModel aModel = (DefaultTableModel) admintable.getModel();
aModel.getDataVector().removeAllElements();
aModel.setColumnIdentifiers(adminMeth.admincomboValidator(tablenameid, addButton, delButtoon, abaxIDButton, tablenameid));
但是我如何在 JavaFX TableView 组件中做同样的事情呢??
感谢您的支持。
【问题讨论】: