Cellrenderer 更改单元格背景颜色也更改值格式、对齐方式
Cellrenderer change cell background color also change value format, alignment
我使用 cellRenderer 更改我的单元格(列)背景颜色,但它也会将单元格值格式更改为图像上的左列,我将默认格式保留为图像上的右列,这是我的简单代码:
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setBackground(Color.ORANGE);
mytable.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );
非常感谢
这是上面描述的图片
最好扩展 Basic TableCellRenderer 以重新添加这些特定样式,因为 basic 将具有最少的样式。
class CustomTableCellRenderer extends BasicTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// Add style logic here
return this;
}
}
您想创建一个允许您格式化数据的自定义渲染器。
基本逻辑是这样的:
public class IntegerRenderer extends DefaultTableCellRenderer
{
private Format formatter = new NumberFormage.getIntegerInstance();
public IntegerRenderer()
{
setHorizontalAlignment( SwingConstants.RIGHT );
}
public void setValue(Object value)
{
// Format the Object before setting its value in the renderer
try
{
if (value != null)
value = formatter.format(value);
}
catch(IllegalArgumentException e) {}
super.setValue(value);
}
}
然后你只需要设置渲染器的背景颜色。
查看 Table Format Renderers 可重复使用 类,make 可以轻松为数字、百分比、日期等创建自定义渲染
我使用 cellRenderer 更改我的单元格(列)背景颜色,但它也会将单元格值格式更改为图像上的左列,我将默认格式保留为图像上的右列,这是我的简单代码:
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setBackground(Color.ORANGE);
mytable.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );
非常感谢 这是上面描述的图片
最好扩展 Basic TableCellRenderer 以重新添加这些特定样式,因为 basic 将具有最少的样式。
class CustomTableCellRenderer extends BasicTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// Add style logic here
return this;
}
}
您想创建一个允许您格式化数据的自定义渲染器。
基本逻辑是这样的:
public class IntegerRenderer extends DefaultTableCellRenderer
{
private Format formatter = new NumberFormage.getIntegerInstance();
public IntegerRenderer()
{
setHorizontalAlignment( SwingConstants.RIGHT );
}
public void setValue(Object value)
{
// Format the Object before setting its value in the renderer
try
{
if (value != null)
value = formatter.format(value);
}
catch(IllegalArgumentException e) {}
super.setValue(value);
}
}
然后你只需要设置渲染器的背景颜色。
查看 Table Format Renderers 可重复使用 类,make 可以轻松为数字、百分比、日期等创建自定义渲染