- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java实现鼠标拖拽移动界面组件由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
默认的,Frame或者JFrame自身已经实现了鼠标拖拽标题栏移动窗口的功能.
只是,当你不满意java的JFrame样式,隐藏了标题栏和边框,又或者干脆直接使用JWindow,那你又该怎么实现鼠标拖拽移动窗口的目的呢?最开始,我简单的在mouseDragged方法里frame.setLocation(e.getX(), e.getY()),结果,frame拖拽的时候不停地闪烁,位置在屏幕上不断跳动。后来网上查资料,找到了答案.
这里给一个简单的示例,一看就明白:
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
|
package
com.jebysun.test.globalhotkey;
import
java.awt.Color;
import
java.awt.Cursor;
import
java.awt.Point;
import
java.awt.event.MouseEvent;
import
javax.swing.JLabel;
import
javax.swing.JWindow;
import
javax.swing.event.MouseInputListener;
/**
* 自定义程序窗口,鼠标可拖拽移动其位置。
* @author Jeby Sun
*
*/
public
class
MyFrame
extends
JWindow {
private
static
final
long
serialVersionUID = 1L;
JLabel titleLbl;
public
MyFrame() {
//设置背景颜色不能直接调用其setBackground方法,而要设置其ContentPane的背景颜色。
this
.getContentPane().setBackground(
new
Color(
0x99FF66
));
this
.setBounds(
100
,
100
,
600
,
400
);
this
.setLayout(
null
);
titleLbl =
new
JLabel(
" 自定义窗口标题栏"
);
titleLbl.setOpaque(
true
);
titleLbl.setBackground(
new
Color(
0x66CC00
));
titleLbl.setBounds(
0
,
0
,
600
,
30
);
this
.add(titleLbl);
//鼠标事件处理类
MouseEventListener mouseListener =
new
MouseEventListener(
this
);
titleLbl.addMouseListener(mouseListener);
titleLbl.addMouseMotionListener(mouseListener);
this
.setVisible(
true
);
}
/**
* 鼠标事件处理
* @author Jeby Sun
*
*/
class
MouseEventListener
implements
MouseInputListener {
Point origin;
//鼠标拖拽想要移动的目标组件
MyFrame frame;
public
MouseEventListener(MyFrame frame) {
this
.frame = frame;
origin =
new
Point();
}
@Override
public
void
mouseClicked(MouseEvent e) {}
/**
* 记录鼠标按下时的点
*/
@Override
public
void
mousePressed(MouseEvent e) {
origin.x = e.getX();
origin.y = e.getY();
}
@Override
public
void
mouseReleased(MouseEvent e) {}
/**
* 鼠标移进标题栏时,设置鼠标图标为移动图标
*/
@Override
public
void
mouseEntered(MouseEvent e) {
this
.frame.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
}
/**
* 鼠标移出标题栏时,设置鼠标图标为默认指针
*/
@Override
public
void
mouseExited(MouseEvent e) {
this
.frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
/**
* 鼠标在标题栏拖拽时,设置窗口的坐标位置
* 窗口新的坐标位置 = 移动前坐标位置+(鼠标指针当前坐标-鼠标按下时指针的位置)
*/
@Override
public
void
mouseDragged(MouseEvent e) {
Point p =
this
.frame.getLocation();
this
.frame.setLocation(
p.x + (e.getX() - origin.x),
p.y + (e.getY() - origin.y));
}
@Override
public
void
mouseMoved(MouseEvent e) {}
}
public
static
void
main(String[] args) {
new
MyFrame();
}
}
|
最后此篇关于Java实现鼠标拖拽移动界面组件的文章就讲到这里了,如果你想了解更多关于Java实现鼠标拖拽移动界面组件的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我们如何才能使 div 从这里移动到那里。我尝试使用 JQuery 拖放和可排序之类的东西,但我的要求没有得到满足。 我的页面上有很多 DIV,我需要将 DIV_1 拖放到 DIV_2 上,然后应该调
简单表格排序 可以双击编辑 自定义编辑后的 规则 可拖动列进行列替换 可推动边框进行列宽度的缩放 复制代码 代码如下: &n
我有一个元素,我想用鼠标移动它。 var troll = document.getElementById('troll'); troll.addEventListener('dragover', (e
我的问题是如何拖放形状,但要克隆可拖动形状,然后将该克隆拖动到可放置形状。 我是 Konva 的新手。在查看文档和示例时,我可以找到如何拖放形状。 我找到了对形状克隆的引用,但我不确定如何执行此操作。
我正在寻找一个 Java UI 设计器,允许我以 float 模式将控件直接拖放到设计表面(没有 SWT 附带的南北等麻烦)。有没有这样的工具? 另外,我只对提供试用版的工具感兴趣。 编辑:我只对允许
@ 目录 Excel上传和图片视频上传 Excel上传 页面中的使用 图片和视频
当放置/放置元素(通过从一个 DIV 拖动到另一个 DIV),然后删除放置的 DIV 中的一个元素时,其中一些元素会更改位置。 这是一个测试场景:http://jsfiddle.net/TcYHW/8
我正在努力做到这一点,以便用户可以将图标从 Web 浏览器拖到他们的桌面,然后创建一个文本文件。我已经了解了内容部分,但我不知道如何设置文件名。我试过改变 dataTransfer.files 但那是
我有一个类似于下面的代码: var dragme = d3.drag() .on("start", function (d) { var variable
前言: 今天一早起床,就一直太阳穴疼,吃了四片去痛片已经无效,真的是疼的直恶心。 如果说学习或者写文章,能够缓解头疼的话,那我想说,我还能坚持一会..... 很久没更新这系列的文章
我是一名优秀的程序员,十分优秀!