JTable的列渲染器采用的是FlyWeigth模式,今天在写代码的时候,忘记实际数据来源,出现一个问题。原理是因为JTable的渲染器是采用共享模式 所以出现
错误情况
自定义Renderer代码:
/**
* 浮点型渲染器
* @author Administrator
*
*/
public class GroupDoubleRenderer extends DefaultJLabelRenderer {
protected void setValue(JLabel groupRenderer, Object value) {
// TODO Auto-generated method stub 注意此处有存在问题的,如果为空才设置值,会导致下个不为空的列,取之前的值
// 对于同一列都是用同一个GroupDoubleRenderer渲染,只是给出的不同值而已
if(null != value && !value.toString().equals("")){
groupRenderer.setText(value.toString());
}
}
<1>正确数据如下
<2>错误情况如下