1

我正在开发一个小程序,用户可以在其中放置一些标记并使用鼠标在图像上画线。

我放置线条和标记的空间是 JPanel。我将标记创建为 JComponents,线条是简单的 Line2D。

标记是透明的正方形,圆圈中填满了颜色。

我在 JPanel 上放了一些鼠标监听器来缩放和拖动图像。标记上也有鼠标监听器,对于路径,我将新的鼠标监听器添加到 JPanel。当我必须画一条线时,我删除了标记的听众。

我在创建标记方面没有问题。行只能从标记或另一行开始。当我尝试画一条线时,我单击一个标记并拖动鼠标。我可以在标记的透明部分看到线条,如果我经过另一个标记附近,我可以看到线条也出现在这些标记中……但在两个标记之间的空间中什么也没有。

我不知道是哪个问题,我重写了JPanel的paintComponent方法,我使用了它的Graphics2D。

如果您需要什么,请自由询问。

4

1 回答 1

1

好的,多亏了一次偶然的测试,我找到了解决方案。

在 JPanel 的paintComponent中,绘制线条后,我缺少这两个命令:

this.revalidate();
this.repaint();

现在一切正常。

于 2012-12-07T08:11:24.237 回答