Java JTable单元格无法正确渲染形状

Java JTable单元格无法正确渲染形状,java,swing,java-2d,Java,Swing,Java 2d,我试图用一个子类JPanel来渲染我的JTable单元格,这些单元格应该显示为带圆圈的彩色矩形。当表格最初显示时,一切看起来都正常,但当对话框或某些东西显示在单元格上时,当它被移除时,已覆盖的单元格没有正确渲染,圆圈被打断等。然后,我必须移动滚动条或扩展窗口以使其正确重画 我用于渲染单元的组件的paintComponent方法如下所示: protected void paintComponent(Graphics g) { setOpaque(true); super.pain

我试图用一个子类JPanel来渲染我的JTable单元格,这些单元格应该显示为带圆圈的彩色矩形。当表格最初显示时,一切看起来都正常,但当对话框或某些东西显示在单元格上时,当它被移除时,已覆盖的单元格没有正确渲染,圆圈被打断等。然后,我必须移动滚动条或扩展窗口以使其正确重画

我用于渲染单元的组件的paintComponent方法如下所示:

protected void paintComponent(Graphics g) { 
    setOpaque(true);
    super.paintComponent(g); 
    Graphics2D g2d = (Graphics2D) g;
    GradientPaint gradientPaint = new GradientPaint(new Point2D.Double(0, 0),    Color.WHITE, new Point2D.Double(0,
            getHeight()), paintRatingColour);
    g2d.setPaint(gradientPaint);
    g2d.fillRect(0, 0, getWidth(), getHeight());

    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);  
    g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

    Rectangle clipBounds = g2d.getClipBounds();
    int x = new Double(clipBounds.getWidth()).intValue() - 15;
    int y = (new Double(clipBounds.getHeight()).intValue() / 2) - 6;

    if (level != null) { 
        g2d.setColor(iconColour);
        g2d.drawOval(x, y, width, height);
        g2d.fillOval(x, y, width, height); 
    } 
}

正如@Gnoupi观察到的
level
,不清楚
width
height
是如何初始化的。为了满足类似的需求,这扩展了
DefaultTableCellRenderer
,并实现了
图标
,以便更容易地控制几何体。它也可以在没有文本的情况下工作。

正如@Gnoupi在
级别
中观察到的那样,
宽度
高度
是如何初始化的还不清楚。为了满足类似的需求,这扩展了
DefaultTableCellRenderer
,并实现了
图标
,以便更容易地控制几何体。它也可以在没有文本的情况下工作。

您应该提供更多的上下文。例如,这是如何调用的,范围更大的变量是什么(看起来像这个
级别
),等等。理想情况下,尝试创建一个。您应该提供更多上下文。例如,这是如何调用的,范围更大的变量是什么(看起来像是这个
级别
),等等。理想情况下,试着做一个比较。