好的,所以出于某种原因当我在构造函数中向JLayeredPane添加组件时:
JLabel label = new JLabel();
label.setSize(100,100); label.setText(“This works”); 添加(标签); 它工作得非常好,但如果稍后在JLayeredPane的父EDT中添加它,它不会让我移动对象,但它们让我看到对象。
从EDT添加:
JLabel label = new JLabel();
label.setToolTipText(url.getHost());
label.setIcon(icon);
label.setBorder(new LineBorder(null));
label.setSize(icon.getIconWidth(), icon.getIconHeight());
dressFrame.layeredPane.add(label, JLayeredPane.DRAG_LAYER);
拖动方法:
Component c = findComponentAt(e.getX(), e.getY());
if (c instanceof JLayeredPane) {
pieceSelected = false;
return;
}
Point parentLocation = c.getLocation();
xAdjustment = parentLocation.x - e.getX();
yAdjustment = parentLocation.y - e.getY();
movingPiece = c;
movingPiece.setLocation(e.getX() + xAdjustment, e.getY() + yAdjustment);
pieceSelected = true;
答案 0 :(得分:0)
从您的代码段中不清楚您的拖动方法是如何被调用的。
也许您应该在JLabel上注册MouseMotionListener
(在mouseDragged事件处理程序中使用您的移动代码)。