Ale*_*bbe 0 java swing jtable tablecellrenderer window-resize
我的Java应用程序中有一个JTable并应用于它,有一个自定义渲染器可以更改表格最后一行的背景颜色.像这样:
我使用以下代码为自定义渲染器实现了这一点:
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int col) {
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, col);
String status = (String)table.getModel().getValueAt(row, 0);
if ("Total".equals(status)) {
setBackground(Color.GRAY);
setForeground(Color.WHITE);
}
this.setHorizontalAlignment(CENTER);
return this;
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我调整窗口大小时,它看起来像这样:
为了让它恢复正常,我必须清除表格并再次添加项目,我应该怎么做才能在调整大小时保持表格外观?谢谢.
你忘记了else块来设置颜色:
if ("Total".equals(status)) {
setBackground(Color.GRAY);
setForeground(Color.WHITE);
} else {
// set colors back to the default settings
setBackground(null);
setForeground(null);
}
Run Code Online (Sandbox Code Playgroud)
否则,渲染器保持"设置"并将所有单元格灰色/白色.想象一个渲染器就像一个橡皮图章,用来摧毁很多相同的东西.如果更改它的颜色并且不更改它们,则图章会在颜色模式下"卡住".
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |