`
xichao1929
  • 浏览: 38762 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

界面去掉边框实现可移动

阅读更多

当我们消掉界面边框之后,就不能再移动界面了,当然只要加上监听器,就可以了。下面便是详细的实现。(备注:这不是我写代码的习惯或者说是风格,关于监听器我习惯放在一个新类中,但是为了方便各位的运行,所有的代码我放在了一个类中)

关于移动位置的计算是:拖动时当前的坐标减去鼠标按下去时的坐标,就是界面所要移动的向量

下面是代码:

package qqproject.clientUIv_02;

import java.awt.Cursor;
import java.awt.Point;

import javax.swing.JFrame;



/**
 * 程序启动的入口
 * 
 * @author Administrator
 * 
 */
public class LoginUI extends JFrame {
	private boolean isMoved;
	private Point pre_point;
	private Point end_point;

	public static void main(String args[]) {
		final LoginUI lui = new LoginUI();
		 lui.showUI();
		
	}

	// 构造函数
	public LoginUI() {
		this.setSize(300, 370);
		this.setLocationRelativeTo(null);
		this.setUndecorated(true);// 去掉窗口的边框

	}

	// 显示窗口的函数
	public void showUI() {
		this.setVisible(true);
        this.setDragable(this);
	}

	// 为窗口加上监听器,使得窗口可以被拖动

	private void setDragable(final LoginUI lui) {
		this.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mouseReleased(java.awt.event.MouseEvent e) {
				isMoved = false;// 鼠标释放了以后,是不能再拖拽的了
				lui.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}

			public void mousePressed(java.awt.event.MouseEvent e) {
				isMoved = true;
				pre_point = new Point(e.getX(), e.getY());// 得到按下去的位置
				lui.setCursor(new Cursor(Cursor.MOVE_CURSOR));
			}
		});
		//拖动时当前的坐标减去鼠标按下去时的坐标,就是界面所要移动的向量。
		this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
			public void mouseDragged(java.awt.event.MouseEvent e) {
				if (isMoved) {// 判断是否可以拖拽
					end_point = new Point(lui.getLocation().x + e.getX() - pre_point.x,
							lui.getLocation().y + e.getY() - pre_point.y);
					lui.setLocation(end_point);
				}
			}
		});
	}

}

 

<!--EndFragment-->

分享到:
评论

相关推荐

    Qt之无边框界面包括最大化、最小化和关闭按钮及实现可移动、窗口伸缩功能

    Qt之无边框界面包括最大化、最小化和关闭按钮及实现可移动、窗口伸缩功能

    pyside2无边框窗口可拖动拉伸边框缩放调节窗口大小

    # pyside2无边框窗口可拖动拉伸边框缩放调节窗口大小 1. 1. 去除系统自带边框,自定义美观ui; 2. 窗口可随意拖动; 3. 最小化、最大化、关闭按钮; 4. 双击标题栏最大化/还原窗口; 5. 最大化状态下拖动窗口还原; ...

    C#编程经验技巧宝典

    43 &lt;br&gt;0061 树的实现 44 &lt;br&gt;3.2 排序 48 &lt;br&gt;0062 如何实现选择排序算法 48 &lt;br&gt;0063 如何实现冒泡排序算法 49 &lt;br&gt;0064 如何实现快速排序算法 50 &lt;br&gt;0065 如何实现插入排序算法 ...

    delphi 开发经验技巧宝典源码

    0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...

    delphi 开发经验技巧宝典源码06

    0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右对齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例047 按钮控件数组实现计数器界面 58 实例048 复选框控件数组 59 实例049 用数组反转字符串 60 3.3 数组排序与查询 61 实例050 使用选择排序法 61 实例051 使用冒泡排序法 62 实例052 使用快速排序法 64 实例053 ...

    计算机应用基础19春在线作业21.txt

    在桌面上要移动任何Windows 2000窗口,可用鼠标指针拖曳该窗口的 A.标题栏 B.边框 C.滚动条 D.控制菜单 正确答案:A 21.重新启动计算机,除了加电启动外,还可以用( )启动。 A.Break B.Ctrl + Alt + Break C.Caps...

    《程序天下:JavaScript实例自学手册》光盘源码

    22.1 实现关机效果的界面 22.2 关机特效(二) 22.3 评星效果 22.4 输入框自动完成功能 22.5 Ajax效果的字符串过滤 22.6 Gmail右上角的Loading效果 22.7 使用XMLHTTP获取天气预报 22.8 拖拽任意对象 22.9 避免打开...

    程序天下:JavaScript实例自学手册

    22.1 实现关机效果的界面 22.2 关机特效(二) 22.3 评星效果 22.4 输入框自动完成功能 22.5 Ajax效果的字符串过滤 22.6 Gmail右上角的Loading效果 22.7 使用XMLHTTP获取天气预报 22.8 拖拽任意对象 22.9 避免打开...

    ASP ISchool随机抽题考试系统

    2.增加未答题加色边框,答题后边框消失,未答题目一目了然 3.整理FSO函数,彻底解决部分机器安装后出现特殊字符的问题 4.增加简答题打分搜索指定考生进行打分的功能 5.增加随机化数据库目录功能,进一步加强安全 V...

    PHP开发实战1200例源码

    实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 表单输入单元单击删除 218 实例182 表单文本输入的移动选择 219 实例183 通过下拉列表选择头像 ...

    KODExplorer 芒果云-资源管理器

    - 你可以把他当做管理linux的一个操作系统界面 - 可以用来作为私有云存储系统,存储你的文件... - 当然你也可以用来分享文件 - Web IDE / browser code editor awesomeness - 更多场景等你来挖掘!…… #### 3....

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 表单输入单元单击删除 218 实例182 表单文本输入的移动选择 219 实例183 通过下拉列表选择头像 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 表单输入单元单击删除 218 实例182 表单文本输入的移动选择 219 实例183 通过下拉列表选择头像 ...

    Excel VBA实用技巧大全 附书源码

    04192复制单元格的数据和公式(去掉前缀字符) 04193复制单元格的数据和公式(保留前缀字符) 04194复制单元格的格式 04195复制单元格的批注 04196复制单元格的有效性设置 04197复制单元格的列宽 04198复制单元格的...

Global site tag (gtag.js) - Google Analytics