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);
}
}
相關文章
- 滑鼠移動到button顏色改變的實現
- js 改變 控制元件的屬性值JS控制元件
- 用js實現動態改變根元素字型大小的方法JS
- tkinter中scale拖拉改變值控制元件(十一)控制元件
- Qt實現控制元件的漸隱漸現動效QT控制元件
- XE 畫矩形實現拖拉改變大小(屬性)
- QT實現可拖動自定義控制元件QT控制元件
- WPF進階技巧和實戰03-控制元件(3-文字控制元件及列表控制元件)控制元件
- 滑鼠懸浮div動畫改變尺寸動畫
- 如何使用前端表格控制元件實現資料更新?前端控制元件
- WPF進階技巧和實戰03-控制元件(4-基於範圍的控制元件及日期控制元件)控制元件
- Qt實現自定義控制元件QT控制元件
- WPF實現html中的table控制元件HTML控制元件
- flutter之改變CupertinoSwitch的大小Flutter
- 基於 RecyclerView 實現的歌詞滾動自定義控制元件View控制元件
- C#控制元件之Repeater控制元件使用C#控制元件
- 怎麼使用 pyqt5 的 textEdit 控制元件,實現拖拽功能?QT控制元件
- 一個可拖拽,移動,自由組合子控制元件的檢視控制元件,讓開發更簡單控制元件
- iOS開發UI篇--使用CAShapeLayer實現一個音量大小動態改iOSUI
- lodop列印控制元件的使用控制元件
- ACCESS TreeView控制元件的使用View控制元件
- Qt 判斷滑鼠在某一控制元件上QT控制元件
- CSS 實現 : 滑鼠移動上去顯示 div,移開隱藏 divCSS
- Qt列表等控制元件實現平滑滾動&deepin啟動器存在的問題QT控制元件
- switch控制元件(變更顏色)控制元件
- 如何透過前端表格控制元件實現自動化報表?前端控制元件
- Flutter 滾動控制元件篇-->滾動監聽及控制(ScrollController)Flutter控制元件Controller
- WPF中Ribbon控制元件的使用控制元件
- WPF中Popup控制元件的使用控制元件
- [雪峰磁針石部落格]pythonGUI作業:tkinter控制元件改變背景色PythonNGUI控制元件
- 關於利用jQuery實現愛奇藝裡面的滑鼠移入改變當前頁面的功能的實現原理jQuery
- Laravel-admin 的控制元件互動Laravel控制元件
- XAML一些控制元件的使用控制元件
- Android - 控制元件抖動效果Android控制元件
- Qt動態新增控制元件QT控制元件
- Android 仿微信/支付寶 字型大小 調整控制元件Android控制元件
- VirtualView Android實現詳解(二)—— 虛擬控制元件的設計與實現ViewAndroid控制元件
- java 方法呼叫,形參改變,實參是否發生改變Java