java - Java中滚动后的矩形条

标签 java swing scroll awt paintcomponent

我使用 Netbeans8 和 Java7。在嵌入 JScrollPane 中的 JPanel 内,我绘制了许多彩色矩形。当我通过滚动条向下滚动时,一些矩形显示为奇怪的 strip ,如下图所示(具体来说,请参见蓝色矩形)。

An example of the strips

我在扩展 JPanel 的类中按如下方式绘制矩形。

List<Rectangle> rectagles = ...
List<Color> colours = ...

@Override
public void paintComponent(Graphics g) {
    int index = 0;
    int maxX = 0;
    int maxY = 0;
    for (Rectangle r : rectangles) {
        g.setColor(colours.get(index));
        int x = r.x;
        int y = r.y;
        int width = r.width;
        int height = r.height;

        maxX = Math.max(maxX, x + width);
        maxY = Math.max(maxY, y + height);

        g.fillRect(x, y, width, height);
        g.setColor(Color.BLACK);
        g.drawRect(x, y, width, height);
        index++;
    }
    this.setMinimumSize(new Dimension(maxX, maxY));
    this.setMaximumSize(new Dimension(maxX, maxY));
    this.setPreferredSize(new Dimension(maxX, maxY));
}

如何避免这种恼人的情况?

最佳答案

您需要添加:

super.paintComponent(g);

在您的paintComponent()方法的顶部,在您进行自定义绘画之前清除背景。

关于java - Java中滚动后的矩形条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253306/

相关文章:

javascript - 内容可见性和粘性标题

javascript - 向下滚动到页面,向上滚动到顶部系统,就像在 MEGA.co.nz 下载页面上一样

java - 如何在Java中使用Streaming API解析JSON日志文件,然后输出列表日志文件

java - 是否有将 ipv6 地址 fd00::识别为本地/私有(private)的 java api?

java - 将多个数组显示到 JTable

java - 如何在 netbeans 的 JTabbedPane 中打开第四个选项卡作为第一个选项卡

java - 数组没有正确记录来自 JOptionPane 的输入

javascript - 滚动到带有 float div 的特定 li

java - Apache Camel - 将文件名从路由 1 传递到 FTP 的路由 2

java - 编码多个 radio 组