如何在运行时添加标签的面板中的两个标签之间绘制一条线

时间:2010-03-28 19:49:36

标签: java swing

面板包含两个标签,这些标签是通过面板上的鼠标点击生成的。我想通过在它们之间画一条线来连接这两个标签,可能是将鼠标指针从一个标签拖到另一个标签。

这里有两个事件 - 一个是点击面板生成标签,第二个是连接这两个标签(鼠标按下,鼠标拖动和鼠标释放事件)。这两个事件都需要调用repaint()方法,但用于不同的目的。但是只能有一个paint()方法。问题是当我连接这两个标签时,线路出现但面板上的其他组件消失了。

2 个答案:

答案 0 :(得分:3)

这可能是 ,因为您正在覆盖面板paint()方法。 改为覆盖paintComponent() / paintComponents()。无论您是使用paint还是paintComponent,都不要忘记分别致电super.paint()super.paintComponents()

答案 1 :(得分:2)

您可以使用JLayeredPane代替JPanel在彼此之上绘制多个对象。

您可以将原始JPanel添加到JLayeredPane,然后添加另一个,Z-index更高,opaque属性设置为true。然后,最高的面板可以很容易地重新绘制,而不需要其他较低的面板来显示奇怪的东西。