我目前正在开发一个拖放应用程序,我真的很想知道 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/