小编Ste*_*han的帖子

java用鼠标移动组件

我试图通过简单地添加鼠标监听器和使用setLocation函数来使任何组件可拖动java.awt.Component.我开始JButton测试是否有可能按照我的想法.

这是我想要做的代码示例:

import java.awt.*;
import javax.swing.*;

public class DragButton extends JButton{

private volatile int draggedAtX, draggedAtY;

public DragButton(String text){
    super(text);
    setDoubleBuffered(false);
    setMargin(new Insets(0, 0, 0, 0));
    setSize(25, 25);
    setPreferredSize(new Dimension(25, 25));

    addMouseListener(new MouseAdapter(){
        public void mousePressed(MouseEvent e){
            draggedAtX = e.getX() - getLocation().x;
            draggedAtY = e.getY() - getLocation().y;
        }
    });

    addMouseMotionListener(new MouseMotionAdapter(){
        public void mouseDragged(MouseEvent e){
            setLocation(e.getX() - draggedAtX, e.getY() - draggedAtY);
        }
    });
}

public static void main(String[] args){
    JFrame frame = new JFrame("DragButton"); …
Run Code Online (Sandbox Code Playgroud)

java swing drag-and-drop awt mouselistener

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

awt ×1

drag-and-drop ×1

java ×1

mouselistener ×1

swing ×1