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实现答题系统的技术要点,涵盖了GUI设计、事件处理、swing组件使用、Java图形化编程等多个方面的知识点。 一、GUI设计 在本文中,我们使用了...
Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java ...
在Java编程领域,Swing库提供了丰富的组件和工具,用于创建复杂的图形用户界面(GUI)。本例子中的"Java使用swing 组件窗体美化的例子.rar"是一个很好的学习资源,它展示了如何利用Swing来设计美观的窗口应用,并且...
实现"Java SWT窗口靠边自动隐藏"的功能,我们需要了解SWT中的几个关键概念: 1. **Shell**:SWT中的Shell对象代表一个顶级窗口,类似于其他GUI库中的Window或Frame。它是所有控件的容器,且具有窗口的基本属性,如...
Java Swing 窗体布局是Java图形用户界面(GUI)设计的重要组成部分,它决定了组件在窗口中的排列方式和外观。Swing提供了多种布局管理器,每种都有其独特的特性和用途,下面我们将详细讨论这些布局管理器。 1. **...
java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java swing实现学生住宿管理系统(源码) java ...
Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小...
Swing组件的一大优点是它们是轻量级的,这意味着它们完全由Java代码实现,而不是依赖于操作系统提供的底层图形支持,这使得Swing应用具有跨平台的特性。 首先,Swing提供了丰富的组件库,包括JButton、JLabel、...
然后,我们来看如何实现窗体闪烁。Java Swing提供了一个`javax.swing.Timer`类,可以用来在一定间隔内执行重复任务。我们可以利用这个定时器来改变窗口的可见性,从而实现闪烁效果。以下是一个简单的闪烁示例: ```...
最后,作者想说的是,1.9块钱的资源,你买不了吃亏,买不了上当,只需省一片绿箭口香糖的钱,你就能拥有一个用于整蛊的Java Swing实现,你在玩的过程中,还可以初步了解一些Java Swing的知识,如此说来,少年,抓紧时间下载吧。
JAVA SWING 简单窗体代码 加注释 可更好入门!
本文将详细介绍两种在Java Swing中实现窗体添加背景图片的方法,并探讨Swing重绘过程中的`repaint()`和`updateUI()`的区别。 方法一:利用JLabel加载图片 此方法依赖于JLabel组件的`setIcon(Icon icon)`方法来加载...
在Java Swing中实现PDF阅读器是一项技术挑战,涉及到对PDF文件格式的理解、IO操作、Swing组件的使用以及可能的第三方库集成。 PDF(Portable Document Format)是一种广泛使用的文件格式,用于存储文档,包括文本...
Java Swing是一个用于开发Java应用程序用户界面的工具包。在Swing中,窗体设计是构建图形用户界面的关键部分,Swing提供了丰富的组件和容器,用于创建功能强大的用户界面。本文将分析Swing中窗体设计的组件和方法,...
### Java_Swing窗体种类简介 #### Swing概述 Swing是Java中的一种图形用户界面工具包,用于构建桌面应用程序。Swing提供了丰富的组件库,这些组件具有高度的可定制性,使得开发者能够创建出功能强大且外观美观的...
在本项目中,我们利用JavaSwing库构建了一个简易的音乐播放器,它具备了基本的音乐播放功能,包括音乐列表展示、播放控制、歌曲切换等。JavaSwing是Java提供的一个图形用户界面(GUI)工具包,允许开发者创建丰富的...
JavaSwing 实现俄罗斯方块游戏。
基础组件示例 登录、注册、修改密码、用户管理、个人信息管理、数据管理万能模板 使用java集合存储数据,不用数据库 教学视频 https://www.bilibili.com/video/BV1mz421d7nG/
《Java Swing实现学生信息管理系统》是一个基于Java Swing GUI工具集开发的应用程序,旨在提供一个高效、直观的方式来管理学校或教育机构中学生的信息。该系统的核心功能包括学生信息的录入、查询、更新和删除。通过...