|
类似QQ的特效,让窗体自动缩进屏幕的代码:
package com.xuhao.kongzhiqi;
import java.awt.*;
import javax.swing.*;
public class YiDongChuangTiClass {
private static boolean panDuan = true;
private static final int BIAN_YUAN = 3;
private static final int YI_DONG_BU_CHANG = 1;
public static void yiRuChuangTi(JFrame jFrame) {
panDuan = false;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = jFrame.getSize();
if (jFrame.getY() <= 0) {
int i = -(frameSize.height) + BIAN_YUAN;
int x = jFrame.getX();
int y = jFrame.getY();
while (y > i) {
y = y - YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
} else if (jFrame.getY() >= (screenSize.height - frameSize.height)) {
int i = screenSize.height - BIAN_YUAN;
int x = jFrame.getX();
int y = jFrame.getY();
while (y < i) {
y = y + YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
} else if (jFrame.getX() <= 0) {
int i = -(frameSize.width) + BIAN_YUAN;
int x = jFrame.getX();
int y = jFrame.getY();
while (x > i) {
x = x - YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
} else if (jFrame.getX() >= (screenSize.width - frameSize.width)) {
int i = screenSize.width - BIAN_YUAN;
int x = jFrame.getX();
int y = jFrame.getY();
while (x < i) {
x = x + YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
}
panDuan = true;
}
public static void yiChuChuangTi(JFrame jFrame) {
panDuan = false;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = jFrame.getSize();
if (jFrame.getY() < 0) {
int x = jFrame.getX();
int y = jFrame.getY();
while (y < 0) {
y = y + YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
} else if (jFrame.getY() > (screenSize.height - frameSize.height)) {
int i = screenSize.height - frameSize.height;
int x = jFrame.getX();
int y = jFrame.getY();
while (y > i) {
y = y - YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
} else if (jFrame.getX() < 0) {
int x = jFrame.getX();
int y = jFrame.getY();
while (x < 0) {
x = x + YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
} else if (jFrame.getX() > (screenSize.width - frameSize.width)) {
int i = screenSize.width - frameSize.width;
int x = jFrame.getX();
int y = jFrame.getY();
while (x > i) {
x = x - YI_DONG_BU_CHANG;
jFrame.setLocation(x, y);
}
}
panDuan = true;
}
public static boolean isPanDuan() {
return panDuan;
}
public static void setPanDuan(boolean panDuanLinShi) {
panDuan = panDuanLinShi;
}
}
此段代码在窗体是否是当前活动窗体的事件中调用。 |
|