1

我正在尝试使用子类 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); 
    } 
}
4

1 回答 1

1

正如@Gnoupi 观察到level的那样,不清楚如何初始化width和。height为了满足类似的需求,此示例扩展DefaultTableCellRenderer并实现Icon了对几何图形的更轻松控制。它也可以在没有文本的情况下工作。

于 2010-06-10T16:38:45.263 回答