如何显示自定义列名 JTable 而不是来自数据库?
How to display custom column names JTable and not from Database?
首先,我使用 Eclipse、WindowBuilder 和 rs2xml.java 来处理 tables。
我的问题是,有没有办法显示自定义列名,例如。就像在设置中,而不是来自数据库?
当我执行我的代码时,它从数据库而不是设置中设置名称,我不希望那样...
显示table:
public void MainTableShow() {
try {
String query="select Rb, Popisni_broj, Lokation, Kancelarija, Tip, Ispravnost from Main";
PreparedStatement pst=connection.prepareStatement(query);
ResultSet rs=pst.executeQuery();
tableMain.setModel(DbUtils.resultSetToTableModel(rs));
pst.close();
rs.close();
} catch (Exception e) {
// TODO: handle exception
}
}
这是在 WindowBuilder
中完成的 table 设置
JScrollPane scrollPane = new JScrollPane();
tableMain = new JTable();
tableMain.setModel(new DefaultTableModel(
new Object[][] {
{null, null, null, null, null, null},
},
new String[] {
"Redni Broj", "Popisni Broj", "Lokacija", "Radno Mesto", "Tip opreme", "Ispravnost opreme"
}
) {
Class[] columnTypes = new Class[] {
Integer.class, String.class, String.class, String.class, String.class, Boolean.class
};
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
boolean[] columnEditables = new boolean[] {
false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
scrollPane.setViewportView(tableMain);
textFieldSearch = new JTextField();
textFieldSearch.setColumns(10);
在这里,您的代码基本上是这样的:
tableMain.setModel(...
两次。最有可能的是,第二次调用需要 DbUtils.resultSetToTableModel(rs)
)。而那个 second 模型只会吹响你在第一次调用时放在那里的任何东西。
因此答案是:您不能那样使用该实用程序调用。我 猜测 DbUtils.resultSetToTableModel()
中的实用程序代码构建了一个仅使用来自数据库的值的模型。
如果你想要适应那个模型,那么你必须研究那个实用方法并改变它在做什么。例如,您可以有另一种实用方法,它也通过代码获取列名,并使用这些而不是来自数据库的值。
但是由于您没有向我们透露该方法,因此无法提供更具体的建议。
首先,我使用 Eclipse、WindowBuilder 和 rs2xml.java 来处理 tables。 我的问题是,有没有办法显示自定义列名,例如。就像在设置中,而不是来自数据库?
当我执行我的代码时,它从数据库而不是设置中设置名称,我不希望那样...
显示table:
public void MainTableShow() {
try {
String query="select Rb, Popisni_broj, Lokation, Kancelarija, Tip, Ispravnost from Main";
PreparedStatement pst=connection.prepareStatement(query);
ResultSet rs=pst.executeQuery();
tableMain.setModel(DbUtils.resultSetToTableModel(rs));
pst.close();
rs.close();
} catch (Exception e) {
// TODO: handle exception
}
}
这是在 WindowBuilder
中完成的 table 设置JScrollPane scrollPane = new JScrollPane();
tableMain = new JTable();
tableMain.setModel(new DefaultTableModel(
new Object[][] {
{null, null, null, null, null, null},
},
new String[] {
"Redni Broj", "Popisni Broj", "Lokacija", "Radno Mesto", "Tip opreme", "Ispravnost opreme"
}
) {
Class[] columnTypes = new Class[] {
Integer.class, String.class, String.class, String.class, String.class, Boolean.class
};
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
boolean[] columnEditables = new boolean[] {
false, false, false, false, false, false
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
scrollPane.setViewportView(tableMain);
textFieldSearch = new JTextField();
textFieldSearch.setColumns(10);
在这里,您的代码基本上是这样的:
tableMain.setModel(...
两次。最有可能的是,第二次调用需要 DbUtils.resultSetToTableModel(rs)
)。而那个 second 模型只会吹响你在第一次调用时放在那里的任何东西。
因此答案是:您不能那样使用该实用程序调用。我 猜测 DbUtils.resultSetToTableModel()
中的实用程序代码构建了一个仅使用来自数据库的值的模型。
如果你想要适应那个模型,那么你必须研究那个实用方法并改变它在做什么。例如,您可以有另一种实用方法,它也通过代码获取列名,并使用这些而不是来自数据库的值。
但是由于您没有向我们透露该方法,因此无法提供更具体的建议。