Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在运行时添加标签的面板中的两个标签之间绘制线_Java_Swing - Fatal编程技术网

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

Java 如何在运行时添加标签的面板中的两个标签之间绘制线,java,swing,Java,Swing,面板包含两个标签,通过在面板上单击鼠标生成。我想通过在两个标签之间画一条线来连接这两个标签,可能是通过将鼠标指针从一个标签拖动到另一个标签 这里有两个事件-一个是单击面板生成标签,另一个是连接这两个标签鼠标按下、鼠标拖动和鼠标释放事件。这两个事件都需要调用repaint方法,但用途不同。但只能有一种绘制方法。问题是,当我连接这两个标签时,线会出现,但面板上的其余组件会消失。这可能是因为您正在覆盖面板绘制方法。 替代paintComponent/paintComponents。无论您使用的是pai

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

这里有两个事件-一个是单击面板生成标签,另一个是连接这两个标签鼠标按下、鼠标拖动和鼠标释放事件。这两个事件都需要调用repaint方法,但用途不同。但只能有一种绘制方法。问题是,当我连接这两个标签时,线会出现,但面板上的其余组件会消失。

这可能是因为您正在覆盖面板绘制方法。 替代paintComponent/paintComponents。无论您使用的是paint还是paintComponent,都不要忘记分别调用super.paint或super.paintComponents。

这可能是因为您正在覆盖panels paint方法。 替代paintComponent/paintComponents。无论您使用的是paint还是paintComponent,都不要忘记分别调用super.paint或super.paintComponents。

您可以使用JLayeredPane而不是JPanel在彼此上方绘制多个对象

您可以将原始JPanel添加到JLayeredPane,然后添加另一个,Z索引更高,不透明属性设置为true。然后,可以轻松地重新绘制最高的面板,而不需要另一个较低的面板来显示奇怪的东西。

您可以使用JLayeredPane而不是JPanel来绘制彼此上方的多个对象

您可以将原始JPanel添加到JLayeredPane,然后添加另一个,Z索引更高,不透明属性设置为true。然后,最高的面板可以很容易地重新喷漆,而不需要另一个较低的面板来显示奇怪的东西