Ячейки JTable неправильно отображают фигуры - PullRequest
1 голос
/ 10 июня 2010

Я пытаюсь визуализировать свои ячейки JTable с помощью подкласса JPanel, и ячейки должны отображаться в виде цветных прямоугольников с нарисованным на них кругом.Когда таблица отображается изначально, все выглядит нормально, но затем, когда диалоговое окно или что-то отображается над ячейками, когда оно удаляется, закрытые ячейки не отображаются должным образом, а круги разбиваются и т. Д. Затем я должен переместить полосу прокрутки.или расширьте окно, чтобы они правильно перерисовывались.

Метод 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); 
    } 
}

1 Ответ

1 голос
/ 10 июня 2010

Поскольку @Gnoupi наблюдает за level, неясно, как инициализируются width и height.Чтобы удовлетворить аналогичную потребность, этот пример расширяет DefaultTableCellRenderer и реализует Icon для более простого управления геометрией.Работает и без текста.

...