我正在尝试使用子类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);
}
}
答案 0 :(得分:1)
由于@Gnoupi使用level
进行观察,目前尚不清楚width
和height
是如何初始化的。为满足类似需求,此example扩展DefaultTableCellRenderer
并实施Icon
以便更轻松地控制几何体。它的工作也没有文字。