面板包含两个标签,这些标签是通过面板上的鼠标点击生成的。我想通过在它们之间画一条线来连接这两个标签,可能是将鼠标指针从一个标签拖到另一个标签。
这里有两个事件 - 一个是点击面板生成标签,第二个是连接这两个标签(鼠标按下,鼠标拖动和鼠标释放事件)。这两个事件都需要调用repaint()方法,但用于不同的目的。但是只能有一个paint()方法。问题是当我连接这两个标签时,线路出现但面板上的其他组件消失了。
答案 0 :(得分:3)
这可能是 ,因为您正在覆盖面板paint()
方法。
改为覆盖paintComponent()
/ paintComponents()
。无论您是使用paint还是paintComponent,都不要忘记分别致电super.paint()
或super.paintComponents()
。
答案 1 :(得分:2)
您可以使用JLayeredPane
代替JPanel
在彼此之上绘制多个对象。
您可以将原始JPanel
添加到JLayeredPane
,然后添加另一个,Z-index更高,opaque属性设置为true。然后,最高的面板可以很容易地重新绘制,而不需要其他较低的面板来显示奇怪的东西。