• java实现控件的移动及使用鼠标改变控件大小


    package cn.com.test;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Cursor;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.Label;
    import java.awt.Point;
    import java.awt.Rectangle;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionAdapter;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.LineBorder;
    
    public class testDrap {
        static int xx , yy;
        static Point p = new Point(0, 0);
        static int w,h;
        static boolean b = true;
        public static void main(String[] args) {
            JFrame frame = new JFrame();
            frame.getContentPane().setLayout(new FlowLayout());
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            final JPanel panel = new JPanel();
            panel.setLayout(new FlowLayout());
            panel.setBorder(new LineBorder(Color.black));
            panel.setPreferredSize(new Dimension(260,55));
            
            frame.setBounds(100, 100, 450, 300);
            final JLabel label = new JLabel(){
                public void repaint() {
                    this.setLocation(p);
                    this.setSize(w,h);
                    super.repaint();
                }
            };
            LineBorder border = new LineBorder(Color.black);
            label.setBorder(border);
            label.setForeground(Color.black);
            label.setPreferredSize(new Dimension(50,30));
            label.addMouseListener(new MouseListener() {
                public void mouseReleased(MouseEvent arg0) {
                    b = false;
                }
                public void mousePressed(MouseEvent mouseEvent) {
                    xx = mouseEvent.getX();
                    yy = mouseEvent.getY();
                    w = label.getSize().width;
                    h = label.getSize().height;
                    b = true;
                }
                public void mouseExited(MouseEvent arg0) {
                }
                public void mouseEntered(MouseEvent e) {
                    if (label.getSize().width-8<=e.getX()) {
                        label.setCursor(new Cursor(Cursor.E_RESIZE_CURSOR));//
                    } else if (8>=e.getX()) {
                        label.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR));//
                    } else {
                        label.setCursor(Cursor.getDefaultCursor());
                    }
                }
                public void mouseClicked(MouseEvent arg0) {
                }
            });
            label.addMouseMotionListener(new MouseAdapter() {
                
                public void mouseMoved(MouseEvent e) {
                    Cursor cursor = label.getCursor();
                    if (label.getSize().width-5<=e.getX()) {
                        label.setCursor(new Cursor(Cursor.E_RESIZE_CURSOR));//
                    } else if (5>=e.getX()) {
                        label.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR));//
                    } else {
                        label.setCursor(Cursor.getDefaultCursor());
                    }
                    if (b) {
                        label.setCursor(cursor);
                    }
                };
                public void mouseDragged(MouseEvent e) {
                    p = label.getLocation();
                    if (label.getCursor().getType() == Cursor.W_RESIZE_CURSOR) {
                        
                        Point point = label.getLocation();
                        p.x = e.getPoint().x + point.x - 0;
                        p.y = point.y;
                        label.setLocation(p);
                        
                        w = label.getSize().width - e.getPoint().x;
                        h = label.getSize().height;
                        label.setSize(w,h);
                    } else if (label.getCursor().getType() == Cursor.E_RESIZE_CURSOR) {
                        
                        
                        
                        w = e.getPoint().x;
                        h = label.getSize().height;
                        label.setSize(w,h);
                        
                        label.setLocation(p);
                    } else {
                        Point point = label.getLocation();
                        ////////////随意移动
                //p.x = e.getPoint().x + point.x - xx;
                //p.y = e.getPoint().y + point.y - yy;
    //label.setLocation(e.getPoint().x + point.x - xx,e.getPoint().y + point.y - yy);
                ////////////沿着X轴方向移动
    p.x = e.getPoint().x + point.x - xx; p.y = point.y; label.setLocation(e.getPoint().x + point.x - xx,point.y); } } } ); panel.add(label); frame.add(panel); JButton btn = new JButton("确认"); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i = 0; i < panel.getComponentCount(); i++) { Component c = panel.getComponent(i); System.out.println(c.getLocation().x); } } }); frame.add(btn); frame.setVisible(true); } }
  • 相关阅读:
    AXIS2远程调用WebService示例(Eclipse+AXIS)
    JSONPath使用说明
    七台机器部署Hadoop2.6.5高可用集群
    因为错误关闭Selinux导致CentOS7启动失败(进度条卡死,图形界面加载卡死)
    CentOS7静默安装Oracle11g
    MapReduce几种提交方式
    SpringMVC源码阅读:过滤器
    Java封装Redis常用操作
    IPv6 地址分类
    内网 LAN IPv6 环境配置 H3C S5500 Huawei S5700
  • 原文地址:https://www.cnblogs.com/wbjgogogo/p/6187518.html
Copyright © 2020-2023  润新知