`
zzjjun0000
  • 浏览: 23502 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JFrame实现窗体在屏幕边缘靠边隐藏

    博客分类:
  • JAVA
 
阅读更多
用JAVA swing做一个项目,类似QQ实现靠边隐藏的代码记录如下:

package com.szboc.ui;

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;

/**
* 实现窗体靠显示器边隐藏的类
* 窗体在屏幕边缘隐藏
* @author formssi
*
*/
public class MyJFrame implements ActionListener
{
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();
private JFrame jFrame;

public MyJFrame(JFrame jFrame)
{
super();
this.jFrame = jFrame;
timer.start();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setAlwaysOnTop(true);
jFrame.setVisible(true);
moveFrame();
}

    private void moveFrame()
    {
        jFrame.addMouseListener(new MouseAdapter()
        {
        @Override
        public void mousePressed(MouseEvent e)
        {
        isDraging = true;
        xx = e.getX();
        yy = e.getY();
       
        }
       
        @Override
        public void mouseReleased(MouseEvent e)
        {
        isDraging = false;
        }
});
       
        jFrame.addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        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();
        }
        }
});
}

@Override
    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 && isPtlnRect(rect,point))
        {
        jFrame.setLocation(0, top);
        }
        else if(left > -5 && left < 5 && !(isPtlnRect(rect,point)))
        {
        jFrame.setLocation(left - width + 1, top);
        }
        else if(top < 0 && left < 0 && isPtlnRect(rect,point))
        {
        jFrame.setLocation(0, 0);
        }
        else if((top > -5 && top < 5) && (left >-5 && left < 5)
        && !(isPtlnRect(rect,point)))
        {
        jFrame.setLocation(left - width + 1, 1);
        }
        else if((top < 0) && isPtlnRect(rect,point))
        {
        jFrame.setLocation(left, 0);
        }
        else if(top > -5 && top < 5 && !(isPtlnRect(rect,point)))
        {
        jFrame.setLocation(left, 1 - height);
        }
        else if(right < 0 && isPtlnRect(rect,point))
        {
        jFrame.setLocation(screenXX - width + 1, top);
        }
        else if(right > -5 && right < 5 && !(isPtlnRect(rect,point)))
        {
        jFrame.setLocation(screenXX - 1, top);
        }
        else if(right < 0 && top < 0  && isPtlnRect(rect,point))
        {
        jFrame.setLocation(screenXX - width + 1, 0);
        }
        else if((right > -5 && right < 5) && (top > -5 && top < 5)
        && !(isPtlnRect(rect,point)))
        {
        jFrame.setLocation(screenXX - 1, 1);
        }
    }

private boolean isPtlnRect(Rectangle rect2, Point point2)
{
if(rect != null )
{
int x0 = rect.x;
int y0 = rect.y;
int x1 = rect.width;
int y1 = rect.height;
int x = 1024;
int y = 768;

if(point2 != null)
{
x = point2.x;
y = point2.y;
}

return x >= x0 && x < x1 && y >= y0 && y < y1;
}
return false;
}

}
分享到:
评论

相关推荐

    java自定义JFrame风格窗体

    在提供的压缩包文件中,可能包含了一些示例代码或者资源文件,如图片、字体等,这些都可以帮助你进一步实现自定义的`JFrame`窗体。记得查看源代码,学习并理解其中的实现细节,以便在自己的项目中应用这些技术。

    如何去掉JFrame上的最大化最小化和关闭按钮.doc

    然而,在某些情况下,我们可能需要去掉JFrame上的最大化、最小化和关闭按钮,以实现自定义的窗体样式。本文将介绍如何去掉JFrame上的最大化、最小化和关闭按钮,并实现自定义的窗体样式。 去掉JFrame上的最大化、...

    java开发可安装程序exe的JFrame弹窗体汇总整理.doc

    java开发可安装程序exe的JFrame弹窗体汇总整理。。。。

    swing jframe 窗体抓取 (源码)

    在这个项目中,"AmsSwing"可能是项目的源代码文件夹,包含了实现窗体抓取功能的类和方法。这些源码可能包括了组件遍历、事件监听、数据提取等模块,对于学习和理解Swing控件抓取有很好的参考价值。 总的来说,这个...

    java开发gui教程之jframe监听窗体大小变化事件和jframe创建窗体

    综上所述,通过JFrame可以轻松地创建窗体并在窗体中添加各种组件,并且可以通过实现相应的监听器来响应窗体的各种状态变化事件。这对于创建交互式且用户友好的桌面应用程序至关重要。这些知识点对于刚开始学习Java ...

    java仿QQ隐藏窗体

    - 实现窗体能贴边隐藏的核心是检测用户拖动窗口时与屏幕边缘的距离。这需要在`MouseMotionListener`的`mouseDragged()`方法中计算窗口的位置,并对比屏幕边界。 3. **事件处理**: - 使用`MouseListener`监听鼠标...

    JAVA 窗体多屏幕显示的问题

    在给定的部分代码中,`showOnScreen`方法接受两个参数:屏幕索引(`screen`)和要显示的窗体(`JFrame frame`)。该方法首先获取当前系统的所有`GraphicsDevice`,然后根据传入的屏幕索引选择特定的`GraphicsDevice`...

    基于Java编写实现记事本的全部功能,使用了JFrame,图形界面显示,下载下来就可以使用,注释完整,一看就会

    (1)设置窗体大小和位置 (2)防止编辑框并设置大小和位置 (3)放置JToolBar,并设置好相应的参数 (4)补充完整JToolBar的对应功能程序。 (5)调试程序并进行修改 本项目是基于Java写的记事本应用,操作简单,...

    JFrame实现JDialog的效果,实现模式窗口

    在Java Swing库中,`JFrame`和`JDialog`是两种主要的顶级窗口组件,它们用于构建用户界面。`JFrame`通常用作应用程序的主要窗口,而`JDialog`则用于创建弹出式对话框,可以是模态或非模态的。本教程将深入探讨如何...

    java实现jframe透明窗体示例

    本示例将详细介绍如何利用Java实现JFrame透明窗体,帮助开发者创建出视觉效果更佳的应用程序。 首先,我们要知道Java标准库并不直接支持窗口的透明性设置。但是,从Java 6 Update 10开始,Sun Microsystems(后来被...

    Java JFrame窗体弹窗_java_jframe

    Java JFrame窗体弹窗是Java Swing库中的一个核心组件,用于创建GUI应用程序的主窗口。在Java中,JFrame是一个顶级容器,它提供了显示其他组件(如按钮、文本框等)的基础框架。JFrame不仅提供了窗口的基本功能,如...

    简易的 Java Jframe窗体聊天室

    Java Jframe窗体聊天室是一种基于Java Swing库创建的用户界面应用,主要使用JFrame类作为主窗口,为用户提供交互式的聊天环境。这个简易的聊天室项目非常适合Java初学者学习,因为它涵盖了基本的GUI设计、事件处理...

    JFrame边框阴影效果,窗口透明,组件不透明

    在给定的场景中,我们将探讨如何实现`JFrame`的窗口透明以及添加阴影边框效果。 首先,要实现`JFrame`的透明,我们需要设置`JFrame`的透明度。Java提供了`setOpacity()`方法来调整窗口的透明度。这个方法接受一个...

    JavaJFrame实现的简易计算器

    5. **错误处理**:在实现除法时,需要考虑除以零的情况,这时可以抛出异常或返回一个提示信息,防止程序崩溃。 通过以上步骤,我们可以构建一个基本的计算器应用。这个项目的源代码中,`item` 文件可能包含了`...

    swing jframe 窗体抓取 (jar包)

    公司最近做的一个自动化测试方面的项目 swing窗体控件信息的自动化抓取,生成脚本文件

    JFrame实现点菜系统

    该点菜系统完全是用java实现,特别适合学习java一段时间,有一定基础的人练习,两周能独立做出来就可以。其中包括IO流实现点菜系统和SQL数据库实现点菜系统,且内部包含文档教程,适用于多数小白。此文件是用eclipse...

    JFrame实现可运行jar包发送邮件

    在Java编程领域,`JFrame` 是Swing库中的一个核心组件,用于创建窗口应用程序的基础框架。本项目中,`JFrame` 被用来构建一个用户界面,以实现发送邮件的功能。`JFrame` 可以包含各种组件,如按钮、文本框、标签等,...

    java实现在JFrame窗口进行图片拖拽

    在Java编程环境中,实现图片在JFrame窗口中的拖放功能是一项常见的需求,特别是在开发桌面应用时。这个功能涉及到了Java的Swing库,图形用户界面(GUI)的设计以及事件处理。下面将详细介绍如何利用Java来实现在...

    用JFrame实现的分歧裁决机(既就是石头,剪子和布游戏)

    在本文中,我们将深入探讨如何使用Java的JFrame来实现一个经典的分歧裁决机,也就是我们熟知的“石头,剪子,布”游戏。这个程序允许用户与计算机进行互动,根据用户选择的“石头”,“剪刀”或“布”与计算机随机...

    Java JFrame简单聊天程序

    Java JFrame简单聊天程序是基于Java Swing库中的JFrame组件实现的一个基本交互式应用程序,它允许用户之间进行实时的文本通信。在Java编程中,JFrame是窗口类的基础,用于创建带有菜单栏、组件和布局的主窗口。在这...

Global site tag (gtag.js) - Google Analytics