`

java swing 实现窗体靠边自动伸缩隐藏

    博客分类:
  • java
阅读更多
package com.test.test;

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.MouseMotionAdapter;

import javax.swing.JFrame;
import javax.swing.Timer;


/**
 * Swing靠边隐藏实例
 * @author Administrator
 *
 */

public class MyFrame implements ActionListener {

	private static final long serialVersionUID = 1L;
	private Rectangle rect;
	// 窗体离屏幕左边的距离
	private int left;
	// 窗体离屏幕右边的距离;
	private int right;
	// 屏幕的宽度;
	private int screenXX;
	// 窗体离屏幕顶部的距离
	private int top;
	// 窗体的宽
	private int width;
	// 窗体的高
	private int height;
	// 鼠标在窗体的位置
	private Point point;
	private Timer timer = new Timer(10, this);
	private int xx, yy;
	private boolean isDraging = false; 
	private JFrame jFrame = new JFrame();

	public MyFrame() {
		super();
		timer.start();
		jFrame.setTitle("窗体在屏幕边缘隐藏演示");
		jFrame.setSize(400, 300);
		jFrame.setLocation(400, 300);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// jFrame.setAlwaysOnTop(true);
		// jFrame.setUndecorated(true);
		jFrame.setVisible(true);
		moveFrame();
	}

	public void actionPerformed(ActionEvent e) {
		left = jFrame.getLocationOnScreen().x;
		top = jFrame.getLocationOnScreen().y;
		width = jFrame.getWidth();
		height = jFrame.getHeight();
		screenXX = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
		right = screenXX - left - width;
		// 获取窗体的轮廓
		rect = new Rectangle(0, 0, width, height);
		// 获取鼠标在窗体的位置
		point = jFrame.getMousePosition();
		if (left < 0 && isPtInRect(rect, point)) {
			jFrame.setLocation(0, top); // 隐藏在左边,鼠标指到后显示窗体;
		} else if (left > -5 && left < 5 && !(isPtInRect(rect, point))) {
			jFrame.setLocation(left - width + 1, top); // 窗体移到左边便边缘隐藏到左边;
		} else if ((top < 0 && left < 0) && isPtInRect(rect, point)) {// 窗体在左上角;
			jFrame.setLocation(0, 0);// 窗口隐藏了,鼠标指到他,就显示出来;
		} else if ((top > -5 && top < 5) && (left > -5 && left < 5)
				&& !(isPtInRect(rect, point))) {
			// 当窗体的上边框与屏幕的顶端的距离小于5,
			// 并且鼠标不再窗体上将窗体隐藏到屏幕的顶端
			jFrame.setLocation(left - width + 1, 1);
		} else if ((top < 0) && isPtInRect(rect, point)) {
			jFrame.setLocation(left, 0);// 窗口隐藏了,鼠标指到他,就显示出来;
		} else if (top > -5 && top < 5 && !(isPtInRect(rect, point))) {
			// 当窗体的上边框与屏幕的顶端的距离小于5时,
			// 并且鼠标不再窗体上将窗体隐藏到屏幕的顶端
			jFrame.setLocation(left, 1 - height);
		} else if (right < 0 && isPtInRect(rect, point)) {
			jFrame.setLocation(screenXX - width + 1, top);// 隐藏在右边,鼠标指到后显示;
		} else if (right > -5 && right < 5 && !(isPtInRect(rect, point))) {
			jFrame.setLocation(screenXX - 1, top); // 窗体移到屏幕右边边缘隐藏到右边;
		} else if (right < 0 && top < 0 && isPtInRect(rect, point)) {// 窗体在右上角;
			jFrame.setLocation(screenXX - width + 1, 0);// 隐藏在右边,鼠标指到后显示;
		} else if ((right > -5 && right < 5) && (top > -5 && top < 5)
				&& !(isPtInRect(rect, point))) {
			jFrame.setLocation(screenXX - 1, 1); // 窗体移到屏幕右边边缘隐藏到右边;
		}
	}

	public boolean isPtInRect(Rectangle rect, Point point) {
		if (rect != null && point != null) {
			int x0 = rect.x;
			int y0 = rect.y;
			int x1 = rect.width;
			int y1 = rect.height;
			int x = point.x;
			int y = point.y;
			return x >= x0 && x < x1 && y >= y0 && y < y1;
		}
		return false;
	}

	public void moveFrame() {
		jFrame.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				isDraging = true;
				xx = e.getX();
				yy = e.getY();
			}

			public void mouseReleased(MouseEvent e) {
				isDraging = false;
			}
		});
		jFrame.addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseDragged(MouseEvent e) {
				if (isDraging) {
					int left = jFrame.getLocation().x;
					int top = jFrame.getLocation().y;
					jFrame.setLocation(left + e.getX() - xx, top + e.getY()
							- yy);
					jFrame.repaint();
				}
			}
		});
	}

	public static void main(String[] args) {
		new MyFrame();

	}
}
分享到:
评论

相关推荐

    基于java swing实现答题系统

    基于Java Swing实现答题系统的技术要点 本文将详细介绍基于Java Swing实现答题系统的技术要点,涵盖了GUI设计、事件处理、swing组件使用、Java图形化编程等多个方面的知识点。 一、GUI设计 在本文中,我们使用了...

    Java Swing实现的生命游戏.zip

    Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java ...

    Java使用swing 组件窗体美化的例子.rar

    在Java编程领域,Swing库提供了丰富的组件和工具,用于创建复杂的图形用户界面(GUI)。本例子中的"Java使用swing 组件窗体美化的例子.rar"是一个很好的学习资源,它展示了如何利用Swing来设计美观的窗口应用,并且...

    java swt 窗口靠边自动隐藏

    实现"Java SWT窗口靠边自动隐藏"的功能,我们需要了解SWT中的几个关键概念: 1. **Shell**:SWT中的Shell对象代表一个顶级窗口,类似于其他GUI库中的Window或Frame。它是所有控件的容器,且具有窗口的基本属性,如...

    java_swing窗体布局

    Java Swing 窗体布局是Java图形用户界面(GUI)设计的重要组成部分,它决定了组件在窗口中的排列方式和外观。Swing提供了多种布局管理器,每种都有其独特的特性和用途,下面我们将详细讨论这些布局管理器。 1. **...

    java swing实现学生住宿管理系统(源码)

    java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java ...

    Java Swing实现仿Chrome浏览器跳跳龙小游戏.zip

    Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小...

    java swing漂亮界面 超酷 javaswing教程

    Swing组件的一大优点是它们是轻量级的,这意味着它们完全由Java代码实现,而不是依赖于操作系统提供的底层图形支持,这使得Swing应用具有跨平台的特性。 首先,Swing提供了丰富的组件库,包括JButton、JLabel、...

    使用Java Swing实现了抖音上的表白程序

    最后,作者想说的是,1.9块钱的资源,你买不了吃亏,买不了上当,只需省一片绿箭口香糖的钱,你就能拥有一个用于整蛊的Java Swing实现,你在玩的过程中,还可以初步了解一些Java Swing的知识,如此说来,少年,抓紧时间下载吧。

    JAVA SWING 简单窗体代码 加注释 可更好入门!

    JAVA SWING 简单窗体代码 加注释 可更好入门!

    Java Swing实现窗体添加背景图片的2种方法详解

    本文将详细介绍两种在Java Swing中实现窗体添加背景图片的方法,并探讨Swing重绘过程中的`repaint()`和`updateUI()`的区别。 方法一:利用JLabel加载图片 此方法依赖于JLabel组件的`setIcon(Icon icon)`方法来加载...

    java swing实现pdf阅读器

    在Java Swing中实现PDF阅读器是一项技术挑战,涉及到对PDF文件格式的理解、IO操作、Swing组件的使用以及可能的第三方库集成。 PDF(Portable Document Format)是一种广泛使用的文件格式,用于存储文档,包括文本...

    浅析Java swing组件窗体设计.pdf

    Java Swing是一个用于开发Java应用程序用户界面的工具包。在Swing中,窗体设计是构建图形用户界面的关键部分,Swing提供了丰富的组件和容器,用于创建功能强大的用户界面。本文将分析Swing中窗体设计的组件和方法,...

    Java_Swing窗体种类简介

    ### Java_Swing窗体种类简介 #### Swing概述 Swing是Java中的一种图形用户界面工具包,用于构建桌面应用程序。Swing提供了丰富的组件库,这些组件具有高度的可定制性,使得开发者能够创建出功能强大且外观美观的...

    俄罗斯方块Java Swing 实现

    JavaSwing 实现俄罗斯方块游戏。

    JavaSwing窗体项目管理系统万能模板 期末课程设计 软件课程设计

    基础组件示例 登录、注册、修改密码、用户管理、个人信息管理、数据管理万能模板 使用java集合存储数据,不用数据库 教学视频 https://www.bilibili.com/video/BV1mz421d7nG/

    Java实现桌面右下角弹窗,实现JavaSwing窗体闪烁

    然后,我们来看如何实现窗体闪烁。Java Swing提供了一个`javax.swing.Timer`类,可以用来在一定间隔内执行重复任务。我们可以利用这个定时器来改变窗口的可见性,从而实现闪烁效果。以下是一个简单的闪烁示例: ```...

    java swing汉诺塔窗体小游戏

    在这个Java Swing实现的汉诺塔窗体小游戏中,开发者为初学者提供了一个直观的学习平台,通过代码来理解递归和问题解决策略。 首先,`Hanoi11.java`是这个游戏的主要源代码文件。这个文件中,我们可能看到以下关键...

    一个利用Java Swing实现可视化界面的扫雷小游戏.zip

    一个利用Java Swing实现可视化界面的扫雷小游戏.zip 一个利用Java Swing实现可视化界面的扫雷小游戏.zip 一个利用Java Swing实现可视化界面的扫雷小游戏.zip 一个利用Java Swing实现可视化界面的扫雷小游戏.zip 一个...

Global site tag (gtag.js) - Google Analytics