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

Java刚入门,鼠标如何托动一个东西的移动

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

    本文导语:  我要实现如下功能: 在一张地图上,画有清华、北大、北外等学校的位置, 如何实现用鼠标托动清华从地图的一个位置到另一个位置 | 给一个例子你看看:   package helloworld; import java.awt.*; import javax.sw...

我要实现如下功能:
在一张地图上,画有清华、北大、北外等学校的位置,
如何实现用鼠标托动清华从地图的一个位置到另一个位置

|
给一个例子你看看:
  package helloworld;

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

public class Frame1 extends JFrame
{
  private MyPanel jPanel1 = new MyPanel();
  private JButton jButton1 = new JButton();
  private int focusx,focusy,x,y;
  private static Frame1 frame1  = null ;
  private int px,py;


  public Frame1()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }
  public static void main(String[] args)
  {
    frame1 = new Frame1();
    frame1.setSize(400,300);
    frame1.show();
  }
  private void jbInit() throws Exception
  {
    border1 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(103, 101, 98),new Color(148, 145, 140));
    jButton1.setBounds(new Rectangle(88, 87, 79, 29));
    jButton1.setText("jButton1");
    jButton1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
    {
      public void mouseDragged(MouseEvent e)
      {
        jButton1_mouseDragged(e);
      }
    });
    jButton1.addMouseListener(new java.awt.event.MouseAdapter()
    {
      public void mousePressed(MouseEvent e)
      {
        jButton1_mousePressed(e);
      }
    });
    jButton2.setBounds(new Rectangle(30, 15, 79, 29));
    jButton2.setText("jButton2");
    jButton3.setBounds(new Rectangle(104, 76, 79, 29));
    jButton3.setText("jButton3");
    jPanel1.setBorder(border1);
    this.getContentPane().add(jPanel1,  BorderLayout.CENTER);
    jPanel1.add(jButton1, null);
    jPanel1.add(jButton2, null);
    jPanel1.add(jButton3, null);
    px = jPanel1.getX() ;
    px = jPanel1.getY() ;
  }

  void jButton1_mousePressed(MouseEvent e)
  {
      focusx = e.getX();
      focusy = e.getY();
  }

  void jButton1_mouseDragged(MouseEvent e)
  {
     Container container = jButton1.getParent();
     int width = container.getWidth() ;
     int height = container.getHeight() ;

     x = jButton1.getX() + e.getX() - focusx ;
     y = jButton1.getY() + e.getY() - focusy ;

     jButton1.setLocation(x,y);

     container.repaint();
     container= null;

  }
  private JButton jButton2 = new JButton();
  private JButton jButton3 = new JButton();
  private Border border1;

  class MyPanel extends JLayeredPane{

     public MyPanel() {
         super();
     }

     public void paint(Graphics g){
       Point p1 = new Point(jButton2.getX() + jButton2.getWidth()-jPanel1.getX(),jButton2.getY()+jButton2.getHeight() - jPanel1.getY());
       Point p2 = new Point(x,y);

       Graphics2D g2 = (Graphics2D)g;
       g2.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
       g2.setColor(Color.darkGray);
       g2.drawLine((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());

       g2.setStroke(new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
       g2.setColor(Color.gray);
       g2.drawLine((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());

       super.paint(g);
     }
}
}

|
去看 java 自带的 demo

|
判断鼠标的坐标,然后擦掉原来的旧坐标的图象,在在新的坐标的地方重绘图象就行了。

|
如果是awt的话就使用java.awt.dnd 这个包,里面都是关于这个的类。

|
在paint(Graphics g)方法中调用drawImage在清华的坐标处画出图像,然后在鼠标拖动事件mouseDragged中调用repaint()重绘方法即可。

    
 
 

您可能感兴趣的文章:

  • 请问:java 入门以及学好Java要看哪些书籍阿????
  • 谢谢推荐几本关于JAVA入门好书?
  • JAVA 怎么入门?
  • 请推荐几本java的入门和提高书籍.
  • 大家觉得java.sun.com上的Java Tutorial写的如何?我觉得是最好的入门教材
  • 请大家介绍一下java BEAN的入门读物吧
  • 谁能告诉我JAVA怎样快速的入门?
  • 请问JAVA怎么入门?
  • 介绍一本真正好的java入门到提高的书吧!!!
  • JAVA入门者问题!
  • 哪位仁兄能给小弟推荐基本java的入门好书
  • 那里有Java的入门书下栽?
  • Java入门
  • 最入门级的java问题,如何运行HelloWorld.java
  • 请帮忙介绍一本java入门的书, 给分啦!
  • 请问大家入门JAVA比较好的书是?谢了
  • 给哥们介绍一个JAVA入门的好教材吧:)
  • 各位老兄,我刚入门怎么样才能学好JAVA呢?
  • 小弟想转学java 希望大家推荐基本入门的书籍,最好是可以下载的,谢谢!
  • 请大家介绍一本Java入门的好书
  • java抓取鼠标事件和鼠标滚轮事件示例
  • Java图形编程中,怎么设置鼠标形状?
  • 鼠标中键滚轮在JAVA中怎么激活?(100分)
  • 菜鸟求助:如何在 JAVA APPLET 里感知到鼠标的双击消息?
  • 能否使Java表中的列不能被鼠标拖移?
  • Java拖曳鼠标实现画线功能的方法
  • Java实现鼠标拖拽移动界面组件
  • 高手指教:关于鼠标事件(java.awt.event.MouseEvent e)!
  • 关于java的控件响应鼠标消息的问题,请大虾帮忙
  • 请问JAVA怎么模拟鼠标和键盘事件[200分]
  • 深入Java Robot实现控制鼠标和键盘的方法详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • coLinux下怎么出现图形界面?没有象Xwindow这样的东西,java写的JPanel这些东西可以图形显示吗?
  • 一个.java文件中怎样来调用另一个.java文件中的变量及其它东西!
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • 想深入学习Java应该学习哪些东西
  • 用java做东西,除了学习java,最重要的还应该学习些什么东西?
  • SecureCRT上运行一个JAVA程序,该程序类似一个在WINDOWS下一直运行的CMD窗口的东西,SecureCRT关掉后,JAVA还会继续运行吗?
  • java 在Unix下有没有类似于Windows SDK的东西
  • Java中所有东西都是对象吗?
  • 在ms-dos中用javac调试java.很多东西比如java_home,classpath等如何设置?
  • Java可以调用Win32API和COM的东西吗?-netix
  • 只考虑WEB应用, JAVA适合吗? 除了IIS, 我还能让什么东西来支持我的ASP? JAVA有关的东东有没有好办法?
  • 请问JAVA有类似MSDN这样的东西吗?
  • 有没有类似Pro*Java的东西
  • 关于java的控件响应鼠标消息的问题,请大虾帮忙 iis7站长之家
  • 学JAVA之前要不要先学一些基础的东西?
  • 考个SUN的JAVA认证值不值?能学到东西吗?是理论知识还是实践知识
  • 我是JAVA新手,所以我不明白(JPanel)类的东西
  •  只有一点JAVA语言基础,但是想先看看关于软件工程方面的东西.可能吗?
  • JAVA中有类似C中的宏定义的东西吗?
  • 在java中往一个文本文件写东西时如何换行?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


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

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

    浙ICP备11055608号-3