当前位置:  技术问答>java相关

关于JLabel的移动问题。

    来源: 互联网  发布时间:2015-08-08

    本文导语:  我是这样做的, import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class Frame1 extends Frame {     public JLabel bl = new JLabel(" b1 "); public Frame1() {         this.setLayout(null);    ...

我是这样做的,
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class Frame1 extends Frame {
    public JLabel bl = new JLabel(" b1 ");

public Frame1() {

        this.setLayout(null);
        bl.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
   System.out.println("dkfj");
   JLabel ls = (JLabel) e.getComponent();
            ls.setLocation(ls.getX()+e.getX(),ls.getY()+e.getY());
            }
        });
        bl.setBounds(new Rectangle(100, 39, 55, 22));
        bl.setBorder(new LineBorder(Color.BLUE, 1));
        this.add(bl);
    }


    public static void main(String[] args) {
        Frame1 frame = new Frame1();
        frame.addWindowListener(
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        frame.setSize(300, 400);
        frame.setVisible(true);
    }
    
}
但感觉不好,因为不能保持鼠标在JLabel中的相对位置,开始移动后,鼠标
总是跑到相对JLabel的0,0位置。
问:该如何解决?
先谢谢!

|
public JLabel bl = new JLabel(" b1 ");
    private Point lastLocation = null;

    public Frame1() {

        this.setLayout(null);
        bl.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
              if( lastLocation == null )
                 return; 
     JLabel ls = (JLabel) e.getComponent();
              int incx = lastLocation.x - e.getX(),
                  incy = lastLocation.y - e.getY();

              ls.setLocation(ls.getX()-incx,ls.getY()-incy);
            }
        });
        bl.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e ) {
              lastLocation = e.getPoint();
            }
            public void mouseReleased(MouseEvent e ) {
              lastLocation = null;
            }
        });
         
        bl.setBounds(new Rectangle(100, 39, 55, 22));
        bl.setBorder(new LineBorder(Color.blue, 1));
        this.add(bl);
    }

|
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class Frame1 extends Frame {
    public JLabel bl = new JLabel(" b1 ");

         int startX,startY;
public Frame1() {

        this.setLayout(null);
        bl.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
   System.out.println("dkfj");
   JLabel ls = (JLabel) e.getComponent();
            ls.setLocation(ls.getX()+e.getX()- startX,ls.getY()+e.getY()- startY);
            }
        });

        bl.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mousePressed(MouseEvent e) {
         JLabel ls = (JLabel) e.getComponent();
        startX = e.getX();
        startY = e.getY();
      }
    });
        bl.setBounds(new Rectangle(100, 39, 55, 22));
        bl.setBorder(new LineBorder(Color.BLUE, 1));
        this.add(bl);
    }


    public static void main(String[] args) {
        Frame1 frame = new Frame1();
        frame.addWindowListener(
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        frame.setSize(300, 400);
        frame.setVisible(true);
    }
    
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing类jlabel的类成员方法: jlabel定义及介绍
  • 请问我在一个applet中动态的写了很多的JLabel(每个JLabel都没有具体的名称),如何在点击某一个JLabel时出发鼠标事件,得到该JLabel的文本
  • java命名空间javax.swing类jlabel.accessiblejlabel的类成员方法: jlabel.accessiblejlabel定义及介绍
  • 图片和jlabel的大小不相同,怎样让图片充满整个jlabel?
  • java命名空间javax.swing类jlabel的类成员方法: setdisabledicon定义及介绍
  • 有个JLabel比如说大小为(200,100),而又有个字符串,其长度超过200,给如何在JLabel上显示完字符串的内容呢
  • java命名空间javax.swing类jlabel的类成员方法: paramstring定义及介绍
  • 在一个applet中动态的写了很多的JLabel(没有具体的名称),通过什么方式可以在符合某一条件的情况下改变某一个JLabel的文本,在不采用重新
  • java命名空间javax.swing类jlabel的类成员方法: labelfor定义及介绍
  • JLabel可以自动换行吗?
  • java命名空间javax.swing类jlabel的类成员方法: gettext定义及介绍
  • 在JLabel中加入的图像无法显示怎么办?
  • java命名空间javax.swing类jlabel的类成员方法: geticon定义及介绍
  • JLabel中的标签怎么加?
  • java命名空间javax.swing类jlabel的类成员方法: updateui定义及介绍
  • 怎样用actionPerformed方法,创建jlabel,特急!问了好多人,都不会.
  • java命名空间javax.swing类jlabel的类成员方法: geticontextgap定义及介绍
  • 怎么获得.exe文件的图标,把它显示在JLabel上----------着急!!!
  • java命名空间javax.swing类jlabel的类成员方法: seticontextgap定义及介绍
  • 怎么给JLabel设置背景色?
  • java命名空间javax.swing类jlabel的类成员方法: setdisplayedmnemonic定义及介绍
  • 想让JLabel显示的字是从上到下的。该怎么办?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3