java - 如何在mouseDragged事件下的DRAG_LAYER上添加JLabel

标签 java swing drag-and-drop jlayeredpane

我目前正在开发一个拖放应用程序,我真的很想知道 JLayeredPane 内部发生了什么,并且我得到了特定的程序行为...

这是交易:

我在 DEFAULT_LAYER 上放置了一个棋盘。
我还有一个国际象棋棋子,我希望在移动它时将其添加到 DRAG_LAYER 中。

但是我有一个癖好......

我想使用这条线

layeredPane.add(chessPiece, JLayeredPane.DRAG_LAYER);

仅在 mouseDragged 事件下。

所以,当我这样做时,我的棋子会在移动鼠标时消失并隐藏在棋盘后面(?!?)

当我将上面的行更改为:

layeredPane.add(chessPiece, JLayeredPane.DRAG_LAYER,0);

一切又恢复正常了。

为什么会发生这种情况?

最佳答案

我使用layeredPane.moveToFront(component)而不是依赖index参数。

请注意,add(Component comp, Object Constraints, int index) 是由 java.awt.Container 实现的,而不是 javax.swing.JLayeredPane.

关于java - 如何在mouseDragged事件下的DRAG_LAYER上添加JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1474168/

相关文章:

java - 检查等同于 IllegalArgumentException?

java - Dynamics CRM 2016.Web API 授权。我有 token ,现在呢?

Silverlight MouseDragElementBehavior。拖放后如何重新排列项目?

html - Firefox html5 拖放不工作

java - 为什么JFrame无法显示任何形状?

javascript - 如何获取拖动的div框的数据集属性?

java - 如何在 Tomcat 9.0.0M10 中修复 "JARs that were scanned but no TLDs were found in them "

java - 在 android.support.v7.util.SortedList 上进行二进制搜索

java - 如何使用 JSlider 更改 JLabel 背景颜色

java - 类似的输入对话框创建模式/Swing