【发布时间】:2021-06-24 14:02:57
【问题描述】:
为了节省数据库空间,我将数字而不是图标保存到数据库中。例如数据库中的数字 9 表示 B.png。我想要的是首先将数据加载到JTable:
然后循环将数字改为相应的图标,如9应改为B.png图标:
但是我将数据加载到表格后它不起作用,数字9单元格应该显示图标,但它显示了图标的文件路径:
public void load() {
try {
conn = (Connection) DriverManager.getConnection("jdbc:mysql://192.168.30.6/game?autoReconnect=true", "lee", "");
pstmt = (PreparedStatement) conn.prepareStatement("Select c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17 From test_socre order by sn");
rs = pstmt.executeQuery();
score.setModel(DbUtils.resultSetToTableModel(rs));
while (rs.next()) {
}
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment(JLabel.CENTER);
score.getColumnModel().getColumn(0).setCellRenderer(centerRenderer);
for (int x = 0; x < score.getColumnCount(); x++) {
score.getColumnModel().getColumn(x).setCellRenderer(centerRenderer);//how to center alignment in jtable
}
for (int ix = 0; ix < score.getRowCount(); ix++) {
for (int jy = 0; jy < score.getColumnCount(); jy++) {
if (score.getValueAt(ix, jy) != null && "9".equals(score.getValueAt(ix, jy).toString())) {
ImageIcon icon = new ImageIcon(getClass().getResource("/slip/B.png"));
score.setValueAt(icon, ix, jy);
}
}
}
rs.close();
pstmt.close();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
}
}
【问题讨论】:
标签: java swing jtable imageicon