【发布时间】:2018-08-28 14:57:07
【问题描述】:
我想创建一个JTable,其中单元格中可能有一个ImageIcon、String 或两者。我已经尝试过像table.setvalue() 这样的解决方案,或者只是将Icon 添加到Object Array 以创建JTable。
for (int n = 0; n < tableHeight; n++) {
for (int m = 0; m < tableWidth; m++) {
if ((n + m) == labelArray.size()) {
break;
}
if (labelArray.get(n + m).iconMode) { //iconMode is True if there is an icon instead of line text
data[n][m] = null;
} else {
String text = new String("<html><p>" + labelArray.get(n + m).lineOne + "<br>" + labelArray.get(n + m).lineTwo + "<p></html>");
data[n][m] = text;
}
}
}
table = new JTable(data, columnNames);
renderer = new DefaultTableCellRenderer();
renderer.setHorizontalTextPosition(JLabel.CENTER);
renderer.setHorizontalAlignment(JLabel.CENTER);
for (int n = 0; n < tableWidth; n++) {
table.getColumnModel().getColumn(n).setCellRenderer(renderer);
table.getColumnModel().getColumn(n).setWidth(50);
}
【问题讨论】:
-
我不能代表所有人,但我知道如果海报创建并显示一个有效的minimal reproducible example 程序和他们的问题,很多人会发现回答问题会容易得多。
-
您需要创建 DefaultTableCellRenderer 的(可能是匿名的)子类并覆盖其getTableCellRendererComponent method。请参阅 Java 教程中的 Using Custom Renderers。
标签: java string swing jtable imageicon