栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Swing:创建可拖动组件…?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Swing:创建可拖动组件…?

我提出了一个简单但可行的解决方案,我自己找到了;)

我该怎么办?

  • 当按下鼠标时,我 在屏幕上* 记录了 光标的 位置以及 组件的 位置。 ***
  • 拖动鼠标时,我将计算新 光标* 和旧 光标 在屏幕上 位置之间的 差异 ,并 根据该差异 移动组件。 *

在最新的JDK 6和Linux(OpenSuse,KDE3)上进行了测试,
但是嘿,它是Java Swing,应该在任何地方都能正常工作。

代码如下:

import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;public class MyDraggableComponent    extends JComponent {  private volatile int screenX = 0;  private volatile int screenY = 0;  private volatile int myX = 0;  private volatile int myY = 0;  public MyDraggableComponent() {    setBorder(new LineBorder(Color.BLUE, 3));    setBackground(Color.WHITE);    setBounds(0, 0, 100, 100);    setOpaque(false);    addMouseListener(new MouseListener() {      @Override      public void mouseClicked(MouseEvent e) { }      @Override      public void mousePressed(MouseEvent e) {        screenX = e.getXonScreen();        screenY = e.getYonScreen();        myX = getX();        myY = getY();      }      @Override      public void mouseReleased(MouseEvent e) { }      @Override      public void mouseEntered(MouseEvent e) { }      @Override      public void mouseExited(MouseEvent e) { }    });    addMouseMotionListener(new MouseMotionListener() {      @Override      public void mouseDragged(MouseEvent e) {        int deltaX = e.getXonScreen() - screenX;        int deltaY = e.getYonScreen() - screenY;        setLocation(myX + deltaX, myY + deltaY);      }      @Override      public void mouseMoved(MouseEvent e) { }    });  }}public class Main {  public static void main(String[] args) {    Jframe f = new Jframe("Swing Hello World");    // by doing this, we prevent Swing from resizing    // our nice component    f.setLayout(null);    MyDraggableComponent mc = new MyDraggableComponent();    f.add(mc);    f.setSize(500, 500);    f.setDefaultCloseOperation(Jframe.DISPOSE_ON_CLOSE);    f.setVisible(true);  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号