Java怎样实现QQ的窗口自动隐藏效果 在Java中怎样实现像QQ那样把窗口的边缘放到电脑屏幕的边缘 QQ的窗口就自动隐藏了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先监听mouseMoved()事件 然后如果动了就event.getX(); event.getY(); 然后再获取屏幕的resolution java.awt.Toolkit.getDefaultToolkit().getScreenSize().widthjava.awt.Toolkit.getDefaultToolkit().getScreenSize().height再把这2个数据处理下 效果就出来了 3楼的给出了一个很好的设想嘛!其实可以这么来做:1.添加鼠标监听事件,判定鼠标是否在类似QQ窗口标题栏按下.记录当前鼠标位置和标题栏右侧距离X.2.在鼠标事件监听中判定前一条件成立下的鼠标释放时的标题栏左侧位置(记为newX).若newX>屏幕宽度,调用窗口重绘方法(自己定义:即把窗口绘制成一条竖线的样子,但是必须得有面积,并且保存此时窗口位置)将窗口添加到桌面边缘并隐藏主窗口.3.在2中添加一个监听线程,判定用户鼠标动作是否落在重绘窗口范围内,若true则调用主窗口显示,并且将边缘窗口隐藏. 上面有个地方打错了,不好意思.2中应该是标题栏右侧位置newX,不过看你的程序怎么样判定啦,无关紧要. 帮LZ写了一个,用到了import javax.swing.Timer;,具体实现了隐藏上部,至于隐藏左边,右边都是同样的道理,可以慢慢研究:import java.awt.Point;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.Timer;public class MyFrame extends JFrame implements ActionListener { private Rectangle rect; // 窗体离屏幕左边的距离 private int left; // 窗体离屏幕顶部的距离 private int top; // 窗体的宽 private int width; // 窗体的高 private int height; // 鼠标在窗体的位置 private Point point; private Timer timer = new Timer(10, this); public MyFrame() { timer.start(); } public void actionPerformed(ActionEvent e) { left = getLocationOnScreen().x; top = getLocationOnScreen().y; width = getWidth(); height = getHeight(); // 获取窗体的轮廓 rect = new Rectangle(0, 0, width, height); // 获取鼠标在窗体的位置 point = getMousePosition(); if ((top < 0) && isPtInRect(rect, point)) { // 当鼠标在当前窗体内,并且窗体的Top属性小于0 // 设置窗体的Top属性为0,就是将窗口上边沿紧靠顶部 setLocation(left, 0); } else if (top > -5 && top < 5 && !(isPtInRect(rect, point))) { // 当窗体的上边框与屏幕的顶端的距离小于5时 , // 并且鼠标不再窗体上 将QQ窗体隐藏到屏幕的顶端 setLocation(left, 5 - height); } } /** * 判断一个点是否在一个矩形内 * * @param rect:Rectangle对象 * @param point:Point对象 * @return:如果在矩形内返回true,不在或者对象为null则返回false */ 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 static void main(String[] args) { MyFrame frame = new MyFrame(); frame.setTitle("Test"); frame.setSize(400, 300); frame.setLocation(400, 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }} java网络爬虫怎么实现抓取登录后的页面 jdbc的resultset问题 socket 多线程 java初学者,帮忙看看哪点错了。 this和super JFace编译提示找不到ListenerList,可能是环境配置的问题 虽然很多人问这个问题,我还是要问:文件下载中的乱码问题. SQL查询控件使用问题(菜鸟级问题啊,汗) Eclipse导入jar包出错问题,求教! tomcat出事了,谁来帮我看看,分不够了可以加!!!! 求源代码 GuI是什么?为什么说JAVA不适合做GUI?
然后再获取屏幕的resolution
java.awt.Toolkit.getDefaultToolkit().getScreenSize().width
java.awt.Toolkit.getDefaultToolkit().getScreenSize().height再把这2个数据处理下 效果就出来了
其实可以这么来做:
1.添加鼠标监听事件,判定鼠标是否在类似QQ窗口标题栏按下.记录当前鼠标位置和标题栏右侧距离X.
2.在鼠标事件监听中判定前一条件成立下的鼠标释放时的标题栏左侧位置(记为newX).若newX>屏幕宽度,调用窗口重绘方法(自己定义:即把窗口绘制成一条竖线的样子,但是必须得有面积,并且保存此时窗口位置)将窗口添加到桌面边缘并隐藏主窗口.
3.在2中添加一个监听线程,判定用户鼠标动作是否落在重绘窗口范围内,若true则调用主窗口显示,并且将边缘窗口隐藏.
2中应该是标题栏右侧位置newX,不过看你的程序怎么样判定啦,无关紧要.
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JFrame;
import javax.swing.Timer;public class MyFrame extends JFrame implements ActionListener { private Rectangle rect;
// 窗体离屏幕左边的距离
private int left;
// 窗体离屏幕顶部的距离
private int top;
// 窗体的宽
private int width;
// 窗体的高
private int height;
// 鼠标在窗体的位置
private Point point; private Timer timer = new Timer(10, this); public MyFrame() {
timer.start();
} public void actionPerformed(ActionEvent e) {
left = getLocationOnScreen().x;
top = getLocationOnScreen().y;
width = getWidth();
height = getHeight();
// 获取窗体的轮廓
rect = new Rectangle(0, 0, width, height);
// 获取鼠标在窗体的位置
point = getMousePosition();
if ((top < 0) && isPtInRect(rect, point)) {
// 当鼠标在当前窗体内,并且窗体的Top属性小于0
// 设置窗体的Top属性为0,就是将窗口上边沿紧靠顶部
setLocation(left, 0);
} else if (top > -5 && top < 5 && !(isPtInRect(rect, point))) {
// 当窗体的上边框与屏幕的顶端的距离小于5时 ,
// 并且鼠标不再窗体上 将QQ窗体隐藏到屏幕的顶端
setLocation(left, 5 - height);
}
} /**
* 判断一个点是否在一个矩形内
*
* @param rect:Rectangle对象
* @param point:Point对象
* @return:如果在矩形内返回true,不在或者对象为null则返回false
*/
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 static void main(String[] args) {
MyFrame frame = new MyFrame();
frame.setTitle("Test");
frame.setSize(400, 300);
frame.setLocation(400, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}