激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于swing實現窗體拖拽和拉伸

基于swing實現窗體拖拽和拉伸

2021-03-10 14:21_Thomas Java教程

這篇文章主要為大家詳細介紹了基于swing實現窗體拖拽和拉伸,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了swing實現窗體拖拽拉伸的具體代碼,供大家參考,具體內容如下

當用setundecorated(true) 后 jframe去掉標題欄后就得自己寫拖拽和拉伸功能了。

下面是效果圖,我的截圖軟件不能夠截取除系統默認光標外的光標,所以各個方向光標變化在圖中沒有體現

基于swing實現窗體拖拽和拉伸

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import javax.swing.*;
import java.awt.*;
 
/**
 * 窗體拖拽和拉伸
 */
public class winresizedemo {
 private jframe jf;
 public winresizedemo(){
  jf=new jframe();
  jf.setundecorated(true);//去標邊界和標題欄
  jf.setlocationrelativeto(null);//窗口置中
  jf.setsize(400,400);
  jf.setdefaultcloseoperation(jframe.exit_on_close);
  resizeevent dg = new resizeevent(jf);
  /**添加兩個監聽器**/
  jf.addmouselistener(dg);
  jf.addmousemotionlistener(dg);
  jf.setvisible(true);
 }
 public static void main(string [] args){
  new winresizedemo();
 }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import javax.swing.*;
import java.awt.*;
import java.awt.event.mouseadapter;
import java.awt.event.mouseevent;
/**
 * 實現窗口各個方向拉伸以及拖動。
 */
public class resizeevent extends mouseadapter{
 public jframe jf;
 private point prepos,curpos,jfpos;
 private static final double breadth = 15.0;//邊界拉伸范圍
 private int dragtype;
 private static final int drag_move = 1;
 private static final int drag_up = 2;
 private static final int drag_upleft = 3;
 private static final int drag_upright = 4;
 private static final int drag_left = 5;
 private static final int drag_right = 6;
 private static final int drag_bottom = 7;
 private static final int drag_bottomleft = 8;
 private static final int drag_bottomright = 9;
 public resizeevent(jframe jf){
  this.jf = jf;
 }
 @override
 public void mousepressed(mouseevent e){
  prepos = e.getlocationonscreen();
 }
 @override
 public void mousemoved(mouseevent e){
  areacheck(e.getpoint());
 }
 @override
 public void mousedragged(mouseevent e){
  curpos = e.getlocationonscreen();
  jfpos = jf.getlocation();
  dragaction();
  prepos = curpos;
 }
 private void dragaction(){
  switch(dragtype){
   case drag_move:
    jf.setlocation(jfpos.x+curpos.x-prepos.x,
      jfpos.y+curpos.y-prepos.y);
    break;
   case drag_up://x位置不變,y位置變化,并且height變化
    jf.setlocation(jfpos.x,
      jfpos.y+curpos.y-prepos.y);
    jf.setsize(jf.getwidth(), jf.getheight()-(curpos.y-prepos.y));
    break;
   case drag_left://y位置不變,x位置變化,width變化
    jf.setlocation(jfpos.x+curpos.x-prepos.x,
      jfpos.y);
    jf.setsize(jf.getwidth()-(curpos.x-prepos.x), jf.getheight());
    break;
   case drag_right://x,y位置不變,width變化
    jf.setlocation(jfpos.x,
      jfpos.y);
    jf.setsize(jf.getwidth()+(curpos.x-prepos.x), jf.getheight());
    break;
   case drag_bottom://x,y位置不變,height變化
    jf.setlocation(jfpos.x,
      jfpos.y);
    jf.setsize(jf.getwidth(), jf.getheight()+(curpos.y-prepos.y));
    break;
   case drag_upleft://x,y位置均變化,h,w均變化
    jf.setlocation(jfpos.x+curpos.x-prepos.x,
      jfpos.y+curpos.y-prepos.y);
    jf.setsize(jf.getwidth()-(curpos.x-prepos.x), jf.getheight()-(curpos.y-prepos.y));
    break;
   case drag_bottomright://x,y位置均不變,h,w變化
    jf.setlocation(jfpos.x,
      jfpos.y);
    jf.setsize(jf.getwidth()+(curpos.x-prepos.x), jf.getheight()+(curpos.y-prepos.y));
    break;
   case drag_upright://x位置不變,y,w,h變化
    jf.setlocation(jfpos.x,
      jfpos.y+curpos.y-prepos.y);
    jf.setsize(jf.getwidth()+(curpos.x-prepos.x), jf.getheight()-(curpos.y-prepos.y));
    break;
   case drag_bottomleft://y不變,xwh變化
    jf.setlocation(jfpos.x+curpos.x-prepos.x,
      jfpos.y);
    jf.setsize(jf.getwidth()-(curpos.x-prepos.x), jf.getheight()+(curpos.y-prepos.y));
    break;
   default:
    break;
  }
 }
 private boolean areacheck(point p){
  if(p.getx()<=breadth && p.gety()<=breadth){
   dragtype = drag_upleft;
   jf.setcursor(new cursor(cursor.nw_resize_cursor));
  }else if(p.getx()>breadth
    && p.getx()<(jf.getwidth()-breadth)
    && p.gety()<=breadth){
   dragtype = drag_up;
   jf.setcursor(new cursor(cursor.n_resize_cursor));
  }else if(p.getx()>=(jf.getwidth()-breadth) && p.gety()<=breadth){
   dragtype = drag_upright;
   jf.setcursor(new cursor(cursor.ne_resize_cursor));
  }else if(p.getx()<=breadth
    && p.gety()<(jf.getheight()-breadth)
    && p.gety()>breadth){
   dragtype = drag_left;
   jf.setcursor(new cursor(cursor.w_resize_cursor));
  }else if(p.getx()>=(jf.getwidth()-breadth)
    && p.gety()<(jf.getheight()-breadth)
    && p.gety()>breadth){
   dragtype = drag_right;
   jf.setcursor(new cursor(cursor.e_resize_cursor));
  }else if(p.getx()<=breadth
    && p.gety()>=(jf.getheight()-breadth)){
   dragtype = drag_bottomleft;
   jf.setcursor(new cursor(cursor.sw_resize_cursor));
  }else if(p.getx()>breadth
    && p.getx()<(jf.getwidth()-breadth)
    && p.gety()>=(jf.getheight()-breadth)){
   dragtype = drag_bottom;
   jf.setcursor(new cursor(cursor.s_resize_cursor));
  }else if(p.getx()>=(jf.getwidth()-breadth)
    && p.gety()>=(jf.getheight()-breadth)){
   dragtype = drag_bottomright;
   jf.setcursor(new cursor(cursor.se_resize_cursor));
  }else{
   dragtype = drag_move;
   jf.setcursor(new cursor(cursor.move_cursor));
   return false;
  }
  return true;
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/a694543965/article/details/78027743

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品7777 | 视频毛片| 欧美精品一区二区视频 | 成人免费精品视频 | 亚洲精品一区二区三区大胸 | 国产精品9191 | 国产精品午夜未成人免费观看 | 国产精品久久久久久影院8一贰佰 | 成人18免费观看 | japanese末成年free| 第一区免费在线观看 | 欧美日性 | 黄色羞羞视频在线观看 | 毛片视频免费观看 | 国产精品视频导航 | 在线播放黄色网址 | 亚洲国产超高清a毛毛片 | 青草av.久久免费一区 | 美女网站黄在线观看 | 日本在线播放一区二区三区 | 成人超碰 | 国产精选久久久 | 亚洲第五色综合网 | 欧美a区| 毛片在线免费播放 | 国产精品自拍av | 黄色一级毛片免费看 | 538任你躁在线精品视频网站 | 欧美一级免费视频 | 久久综合一区 | 欧美福利视频一区二区 | 国产精品一区二区三区在线看 | 一级电影在线免费观看 | 羞羞视频免费入口网站 | 欧美视频一二三区 | 精品亚洲一区二区 | 毛片网站视频 | 日本成人高清视频 | 国产噜噜噜噜久久久久久久久 | 久久久久久亚洲综合影院红桃 | 天天鲁在线视频免费观看 |