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);
}
}
相關文章
- 在執行時使用滑鼠移動控制元件和改變控制元件的大小 (轉)控制元件
- 實現控制元件的移動、改變大小(DELPHI實現) (轉)控制元件
- 滑鼠移動到button顏色改變的實現
- 一勞永逸讓VB自動改變控制元件大小控制元件
- Jquery實現滑鼠拖動改變div高度jQuery
- [VB.net][WinForm]Panel控制元件移動\滑鼠拖動ORM控制元件
- Android之改變控制元件的背景及形態Android控制元件
- Android 動態佈局 動態生成 銷燬控制元件 改變控制元件的位置等Android控制元件
- js實現的拖動改變視窗大小功能JS
- js 改變 控制元件的屬性值JS控制元件
- 動態新增控制元件時,計算控制元件大小的解決方法控制元件
- 動態移動控制元件 (轉)控制元件
- tkinter中scale拖拉改變值控制元件(十一)控制元件
- Qt實現控制元件的漸隱漸現動效QT控制元件
- XE 畫矩形實現拖拉改變大小(屬性)
- 改變自定義UIButton裡子控制元件的位置UI控制元件
- ae+C#實現圖層管理控制元件上的圖層移動功能C#控制元件
- vb窗體中控制元件自動隨窗體變化大小(原始碼)控制元件原始碼
- GridView滑鼠移動變色View
- DELPHI也可以實現控制元件陣列,用定義陣列變數實現控制元件陣列 (轉)控制元件陣列變數
- QT實現可拖動自定義控制元件QT控制元件
- Android實現圖片滾動控制元件Android控制元件
- Android 實現平滑滾動的歌詞控制元件Android控制元件
- 使用javascript 實現.net 驗證控制元件功能JavaScript控制元件
- C#中用滑鼠移動頁面功能的實現C#
- 如何:使用TreeView控制元件實現樹結構顯示及快速查詢View控制元件
- 自定義DropDownList控制元件的實現控制元件
- Repeater控制元件的分頁實現控制元件
- 按enter時,控制元件焦點自動移動控制元件
- 網頁內一次實現使用者控制元件內Web控制元件的多事件網頁控制元件Web事件
- CSS實現的滑鼠滑過改變連結文字例項程式碼CSS
- WPF進階技巧和實戰03-控制元件(3-文字控制元件及列表控制元件)控制元件
- 如何使用前端表格控制元件實現資料更新?前端控制元件
- flutter之改變CupertinoSwitch的大小Flutter
- js滑鼠移動實現圖片立體滾動效果JS
- Qt實現自定義控制元件QT控制元件
- 智慧控制元件變幻控制元件
- 改變滑鼠指標 (轉)指標