移动组件练习

本文涉及的产品
语种识别,语种识别 100万字符
文本翻译,文本翻译 100万字符
图片翻译,图片翻译 100张
简介:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
import javax.swing.event.*;
public class moveText{
    Label myText;
    Frame mT;
    Point point = new Point(0, 0);
    public moveText(){
        myText=new Label("move me please!");
        mT = new Frame("moveTEXT");
        myText.setBackground(Color.yellow);
 
        mT.addWindowListener(new myWindowListener());
        mT.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
        mT.setSize(600, 600);
        mT.setLocation(100, 100);
        myText.addMouseMotionListener(new myMouseListener1());
        myText.addMouseListener(new myMouseListener2());
        myText.setSize(20, 5);
        mT.add(myText);
        
        mT.setVisible(true);
    }
    class myMouseListener1 extends MouseMotionAdapter {
          
         /* 
          当鼠标拖动时触发该事件。 记录下鼠标按下(开始拖动)的位置。 
         */  
        public void mouseDragged(MouseEvent e) {  
            // 转换坐标系统,将新的坐标(鼠标相对于组件的坐标)转换成该相对与其组件的父亲组件的坐标
            Point newPoint = SwingUtilities.convertPoint(myText, e  
                    .getPoint(), myText.getParent());  
            // 设置标签的新位置  
            
            myText.setLocation(myText.getX()  
                    + (newPoint.x - point.x), myText.getY()  
                    + (newPoint.y - point.y));
            
            //这时开始写的方法,明显和上面的方法差别很大
            //myText.setLocation(newPoint);
            
            // 更改坐标源点  
            point = newPoint;  
        }  
    }
    class myMouseListener2 extends MouseAdapter{
        /*
           当鼠标按下时触发该事件。 记录下鼠标按下(开始拖动)的位置。 
         */  
        public void mousePressed(MouseEvent e) {  
            // 得到当前坐标点  
            point = SwingUtilities.convertPoint(myText, e.getPoint(),  
                    myText.getParent());  
       }
    }
    public static void main(String args[]){
        moveText mT=new moveText();
        
    }
}

class myWindowListener extends WindowAdapter{
    public void windowClosing(WindowEvent e){//Frame的关闭方法
       System.exit(0);
    }
}

目录
相关文章
|
4月前
|
监控 数据可视化 索引
四个组件配置说明
官方文档!!!!!!!!! 1.在Filebeat中配置info.log日志文件的路径,以及要将日志发送到Logstash的地址和端口,可以在Filebeat的配置文件 filebeat.yml中添加如下配置: Copy filebeat.inputs: - type: log paths: - /usr/logs/info.log fields: log_type: info output.logstash: hosts: ["localhost:5044"] 这里使用filebeat.inputs指定要监控的日志文件路径
52 5
|
7月前
在组件上使用
在组件上使用
|
7月前
|
JavaScript
组件上使用 v-for
组件上使用 v-for
|
7月前
|
资源调度 JavaScript 前端开发
2020你应该有一个自己的组件
2020你应该有一个自己的组件
69 0
|
7月前
|
JavaScript 前端开发
Vue3中的组件:组件的定义、组件的属性和事件、组件的Slots和动态组件
Vue3中的组件:组件的定义、组件的属性和事件、组件的Slots和动态组件
154 0
|
设计模式 JavaScript 前端开发
可复用性的组件详解
可复用性的组件详解
229 0
可复用性的组件详解
|
负载均衡 网络协议 Java
SprongCloud组件
SprongCloud组件
|
架构师 定位技术 iOS开发
关于组件,你真的了解么?
最近经常听到“组件化开发”,那架构设计里,组件到底如何定义、设计和应用呢,今天我们一起来聊聊。
关于组件,你真的了解么?
|
开发者
NSAlert组件应用总结
NSAlert组件应用总结
454 0
NSAlert组件应用总结