把图片图在JLabel中,拖动一个标签是不是很方便呢 因为图片是没有句柄的拖动最好的办法是转换坐标原点我有代码,自定义可拖动的标签 class CustomJLabel extends JLabel{ private int offsetX, offsetY; public CustomJLabel(){ //完成控件本身的拖动的功能 addMouseListener(PressedMouseListener);
//完成鼠标拖动控件的动作 addMouseMotionListener(CustomMouseMotionListener); } //鼠标单击时记录点击位置坐标,自定义MouseListener监听器 protected MouseListener PressedMouseListener = new MouseAdapter() { public void mousePressed(MouseEvent e) { if(e.getButton()==MouseEvent.BUTTON1){//左键时才有效 offsetX = e.getX(); offsetY = e.getY(); //System.out.println(offsetX+" "+offsetY); } } }; //鼠标拖拽控件监听器 protected MouseMotionListener CustomMouseMotionListener = new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { //如果鼠标超出了父容器,则不再移动,也锁定鼠标 if(e.getModifiers()==16){ //左键时才有效 if (!getParent().contains( e.getX() + (int) getLocation().getX(), e.getY() + (int) getLocation().getY())) { //锁定鼠标光标 try { Robot robot = new java.awt.Robot(); Point p = getLocationOnScreen(); robot.mouseMove(p.x + offsetX, p.y + offsetY); } catch (AWTException ae) { } return; } int currentX=e.getX() + (int) getLocation().getX() - offsetX; int currentY=e.getY() + (int) getLocation().getY() - offsetY;
不过空当接龙好像不是拖着一个图片在窗体内移动吧,纸牌才这样。
我的e-mail:[email protected] 多谢 miwoo(miwoo),受到后马上结帖!
[email protected]
因为图片是没有句柄的拖动最好的办法是转换坐标原点我有代码,自定义可拖动的标签
class CustomJLabel extends JLabel{
private int offsetX, offsetY;
public CustomJLabel(){
//完成控件本身的拖动的功能
addMouseListener(PressedMouseListener);
//完成鼠标拖动控件的动作
addMouseMotionListener(CustomMouseMotionListener);
}
//鼠标单击时记录点击位置坐标,自定义MouseListener监听器
protected MouseListener PressedMouseListener = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(e.getButton()==MouseEvent.BUTTON1){//左键时才有效
offsetX = e.getX();
offsetY = e.getY();
//System.out.println(offsetX+" "+offsetY);
}
}
}; //鼠标拖拽控件监听器
protected MouseMotionListener CustomMouseMotionListener =
new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
//如果鼠标超出了父容器,则不再移动,也锁定鼠标
if(e.getModifiers()==16){ //左键时才有效
if (!getParent().contains(
e.getX() + (int) getLocation().getX(),
e.getY() + (int) getLocation().getY())) {
//锁定鼠标光标
try {
Robot robot = new java.awt.Robot();
Point p = getLocationOnScreen();
robot.mouseMove(p.x + offsetX, p.y + offsetY);
} catch (AWTException ae) {
}
return;
}
int currentX=e.getX() + (int) getLocation().getX() - offsetX;
int currentY=e.getY() + (int) getLocation().getY() - offsetY;
//超出左上就不在移动
//int tmp_X=(currentX<=0)?0:currentX;
//int tmp_Y=(currentY<=0)?0:currentY;
//m_Point 的校正偏移量
//int off_X=(currentX<=0)?currentX:0;
//int off_Y=(currentY<=0)?currentY:0;
setLocation(currentX,currentY);
//setLocation(tmp_X,tmp_Y);
//e.getX() + (int) getLocation().getX() - offsetX,
//e.getY() + (int) getLocation().getY() - offsetY);
//重设节点的m_Point;
//m_Point.x=m_Point.x+e.getX()-offsetX;
//m_Point.y=m_Point.y+e.getY()-offsetY;
//更新所有的链接
// //NetNode.this.notifyAllLinks();
//拖动的时候调用主面板的paint()
//UIMainPanel.getInstance().repaint();
}
}
};
}
我要做一个和http://xajh.dfm-xf.com.cn/kdjl1/index.html相当的当空接龙,其中最重要的是定义我的拖动类!