所以我想为我的JTable添加一个带背景颜色的空JLabel。 这是一个饼图,我想添加这个以便传说匹配。
代码:
for (String result : queryResult) {
JLabel label = new JLabel("Hallo: "+rowCount);
label.setBackground(colors[rowCount]);
label.setOpaque(true);
String queryResultString = "";
queryResultString = result.toString();
String[] lineArray = queryResultString.split("////");
String[] pieData = new String[3];
pieData[0] = lineArray[0];
pieData[1] = lineArray[rangId - 1];
int value = Integer.parseInt(pieData[1]);
double percentage = value / total * 100;
pieData[2] = "" + percentage + "%";
pieModel.addRow(new Object[] {label, pieData[0], pieData[1], pieData[2]});
rowCount++;
}
pieTable.setDefaultRenderer(String.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
if(value instanceof JLabel){
//This time return only the JLabel without icon
return (JLabel)value;
}else{
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
});
我做错了什么? :○
当我查看表格第一列中的结果时,它说:
javax.swing.JLabel中[,0,0,0 ...... 看不到剩下的,但它绝对不能正常工作! :(
答案 0 :(得分:5)
所以我想为我的JTable添加一个带背景颜色的空JLabel。这是一个饼图,我想添加这个以便传说匹配。
默认情况下,Component
,JComponent
或JLabel
答案 1 :(得分:3)
JTable中的每个单元格都已经是JLabel。您需要自定义getTableCellRendererComponent以返回具有适当背景颜色集的super.getTableCellRendererComponent,以实现您的目标效果。
答案 2 :(得分:2)
DefaultTableCellRenderer
继承自JLabel
(继承自JComponent
)。因此,您可以在getTableCellRendererComponent
中更改JLabel属性。
ImageIcon icon = new ImageIcon(getClass().getResource("images/moon.gif"));// prepared before
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
setText((String)value);
setIcon(icon);
return this;
}
setText
来自超级JLabel类,而setIcon
来自超级JComponent类。
几乎所有DefaultTableCellRenderer
方法都会覆盖这些类的方法。