是否有办法在搜索之前修复 JTable?
Is there away to fix the JTable same is before search?
我有一个 jtable,如图所示,带有 2 个 JDateChooser,当我搜索并填充 table 时,它丢失了单元格渲染,有没有办法修复它?
我尝试了很多建议,但 none 有效
这是搜索和设置模式按钮的动作
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
java.sql.Date lowerdate = new java.sql.Date(dateChooser.getDate().getTime());
java.sql.Date upperdate = new java.sql.Date(dateChooser_1.getDate().getTime());
Connection con = DerbyConnection.dbConnector();
PreparedStatement pstmt = con.prepareStatement("select * from COMPANYCHEKS WHERE CHEKSDATEIN >= ? AND CHEKSDATEIN <= ?");
pstmt.setDate(1, lowerdate);
pstmt.setDate(2,upperdate);
ResultSet rs = pstmt.executeQuery();
table.setModel(Menu32.resultSetToTableModel(rs));
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
这是我的模型集,将被调用以用结果table填充
public static TableModel resultSetToTableModel(ResultSet rs) {
try {
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
Vector<String> columnNames = new Vector<String>();
columnNames.add("الرمز");
columnNames.add("العميل");
columnNames.add("البنك");
columnNames.add("تاريخ الشك");
columnNames.add("رقم الشك");
columnNames.add("القيمة");
columnNames.add("العملة");
columnNames.add("سعر الصرف");
columnNames.add("القيمة بالدولار");
columnNames.add("تاريخ الإيداع");
columnNames.add("بنك الإيداع");
columnNames.add("الحالة");
columnNames.add("ملاحظات");
// Get all rows.
Vector<Vector<Object>> rows = new Vector<Vector<Object>>();
while (rs.next()) {
Vector<Object> newRow = new Vector<Object>();
for (int i = 1; i <= numberOfColumns; i++) {
newRow.addElement(rs.getObject(i));
}
rows.addElement(newRow);
}
return new DefaultTableModel(rows, columnNames);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
在这里你可以看到发生了什么
Table 搜索前:
table 填充后:
when i search and populate the table it loses the cell render is there a way to fix it ?
默认情况下,当您为 table 创建一个新模型时,会根据 TableModel 中的新数据创建一个新的 TableColumnModel 并且您会丢失自定义渲染器。
假设模型的列是相同的并且只有数据行发生了变化,您可以通过调用来阻止创建 TableColumnModel:
table.setAutoCreateColumnsFromModel( false );
在使用原始 TableModel 创建 JTable 之后。
我有一个 jtable,如图所示,带有 2 个 JDateChooser,当我搜索并填充 table 时,它丢失了单元格渲染,有没有办法修复它? 我尝试了很多建议,但 none 有效
这是搜索和设置模式按钮的动作
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
java.sql.Date lowerdate = new java.sql.Date(dateChooser.getDate().getTime());
java.sql.Date upperdate = new java.sql.Date(dateChooser_1.getDate().getTime());
Connection con = DerbyConnection.dbConnector();
PreparedStatement pstmt = con.prepareStatement("select * from COMPANYCHEKS WHERE CHEKSDATEIN >= ? AND CHEKSDATEIN <= ?");
pstmt.setDate(1, lowerdate);
pstmt.setDate(2,upperdate);
ResultSet rs = pstmt.executeQuery();
table.setModel(Menu32.resultSetToTableModel(rs));
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
这是我的模型集,将被调用以用结果table填充
public static TableModel resultSetToTableModel(ResultSet rs) {
try {
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
Vector<String> columnNames = new Vector<String>();
columnNames.add("الرمز");
columnNames.add("العميل");
columnNames.add("البنك");
columnNames.add("تاريخ الشك");
columnNames.add("رقم الشك");
columnNames.add("القيمة");
columnNames.add("العملة");
columnNames.add("سعر الصرف");
columnNames.add("القيمة بالدولار");
columnNames.add("تاريخ الإيداع");
columnNames.add("بنك الإيداع");
columnNames.add("الحالة");
columnNames.add("ملاحظات");
// Get all rows.
Vector<Vector<Object>> rows = new Vector<Vector<Object>>();
while (rs.next()) {
Vector<Object> newRow = new Vector<Object>();
for (int i = 1; i <= numberOfColumns; i++) {
newRow.addElement(rs.getObject(i));
}
rows.addElement(newRow);
}
return new DefaultTableModel(rows, columnNames);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
在这里你可以看到发生了什么
Table 搜索前:
table 填充后:
when i search and populate the table it loses the cell render is there a way to fix it ?
默认情况下,当您为 table 创建一个新模型时,会根据 TableModel 中的新数据创建一个新的 TableColumnModel 并且您会丢失自定义渲染器。
假设模型的列是相同的并且只有数据行发生了变化,您可以通过调用来阻止创建 TableColumnModel:
table.setAutoCreateColumnsFromModel( false );
在使用原始 TableModel 创建 JTable 之后。