Java JTable单元格无法正确渲染形状
我试图用一个子类JPanel来渲染我的JTable单元格,这些单元格应该显示为带圆圈的彩色矩形。当表格最初显示时,一切看起来都正常,但当对话框或某些东西显示在单元格上时,当它被移除时,已覆盖的单元格没有正确渲染,圆圈被打断等。然后,我必须移动滚动条或扩展窗口以使其正确重画 我用于渲染单元的组件的paintComponent方法如下所示:Java JTable单元格无法正确渲染形状,java,swing,java-2d,Java,Swing,Java 2d,我试图用一个子类JPanel来渲染我的JTable单元格,这些单元格应该显示为带圆圈的彩色矩形。当表格最初显示时,一切看起来都正常,但当对话框或某些东西显示在单元格上时,当它被移除时,已覆盖的单元格没有正确渲染,圆圈被打断等。然后,我必须移动滚动条或扩展窗口以使其正确重画 我用于渲染单元的组件的paintComponent方法如下所示: protected void paintComponent(Graphics g) { setOpaque(true); super.pain
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
,并实现了图标
,以便更容易地控制几何体。它也可以在没有文本的情况下工作。您应该提供更多的上下文。例如,这是如何调用的,范围更大的变量是什么(看起来像这个级别
),等等。理想情况下,尝试创建一个。您应该提供更多上下文。例如,这是如何调用的,范围更大的变量是什么(看起来像是这个级别),等等。理想情况下,试着做一个比较。