我有一个使用paintComponents绘制的JPanel,上面涂有许多小瓷砖(4097 * 4097 1x1)。
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
drawTile(g);
}
public void drawTile(Graphics g) {
for (double[] row : terrainData) {
for (double d : row) {
int v = (int) (20 - d / 500);
if (v < 0) {
v = 0;
} else if (v > 20) {
v = 20;
}
color = v;
g.setColor(colors[color]);
g.fillRect(left, top, x, y);
left += x;
if (left == terrainSize * x) {
left = 0;
top += y;
}
}
}
}
我将这个JPanel添加到JScrollPane以便在大面板中移动。我的问题是每当移动JScrollPane时,JPanel都会完全消失。我尝试在滚动窗格中添加一个更改侦听器,当stateChanged()重新验证并重新绘制JPanel时,尽管这并没有改变结果。如何让JPanel完全不更改,或者在滚动JScrollPane时重新绘制?