📄 uieffect.java
字号:
/*
* UIEffect.java
*
* Created on 2006年12月3日, 下午6:00
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package helper;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author Virlene Cheng
*/
public class UIEffect
{
private int oldX,oldY; /** 用于保存旧的 x 坐标 */
private Component component = null; /** 用于保存旧的 y 坐标 */
/** 黄金分割 */
public static final double GOLDEN_SECTION = 0.618;
/** 构造函数 */
public UIEffect(Component component)
{
this.component = component;
}
/** 获取组件 */
public Component getComponent()
{
return component;
}
/** 设置组件 */
public void setComponnet(Component component)
{
this.component = component;
}
/** 使组件可以移动 */
public void MakeComponentCanMove()
{
component.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent evt)
{
int newX = evt.getX(), newY = evt.getY();
int moveX = newX - oldX, moveY = newY - oldY;
component.setLocation(component.getX() + moveX, component.getY() + moveY);
}
});
component.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent evt)
{
oldX = evt.getX();
oldY = evt.getY();
}
});
}
/** 使组件可以沿 x 轴移动 */
public void MakeComponentCanMoveX()
{
component.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent evt)
{
int newX = evt.getX();
int moveX = newX - oldX;
component.setLocation(component.getX() + moveX, component.getY());
}
});
component.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent evt)
{
oldX = evt.getX();
}
});
}
/** 使组件可以沿 y 轴移动 */
public void MakeComponentCanMoveY()
{
component.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent evt)
{
int newY = evt.getY();
int moveY = newY - oldY;
component.setLocation(component.getX(), component.getY() + moveY);
}
});
component.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent evt)
{
oldY = evt.getY();
}
});
}
/** 使组件位于中间 */
public void MakeComponentCenter()
{
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
int posX = (int)(size.width * 0.5 - component.getWidth() * 0.5);
int posY = (int)(size.height * 0.5 - component.getHeight() * 0.5);
component.setLocation(posX, posY);
}
/** 使组件位于最好的位置 */
public void MakeComponentPerfectPosition()
{
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
int posX = (int)((size.width - component.getWidth()) * 0.5);
int posY = (int)((size.height - component.getHeight()) * (1 - GOLDEN_SECTION));
component.setLocation(posX, posY);
}
/** 沿 x 轴平均移动窗体 */
public void moveComponentX(int startPos, int endPos, double step)
{
double x = endPos - startPos;
double newXFloat = startPos;
int newX = startPos;
while(true)
{
if (x * (newX - endPos) <= 0)
{
try
{
Thread.sleep(1);
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
component.setLocation(newX, component.getY());
newXFloat = newXFloat + step;
newX = (int)newXFloat;
}
else
{
component.setLocation(endPos, component.getY());
break;
}
}
}
/** 沿 y 轴平均移动窗体 */
public void moveComponentY(int startPos, int endPos, double step)
{
double y = endPos - startPos;
double newYFloat = startPos;
int newY = startPos;
while(true)
{
if (y * (newY - endPos) <= 0)
{
try
{
Thread.sleep(1);
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
component.setLocation(component.getX(), newY);
newYFloat = newYFloat + step;
newY = (int)newYFloat;
}
else
{
component.setLocation(component.getX(), endPos);
break;
}
}
}
/** 沿 x 轴加速或减速移动窗体 */
public void moveComponentXWithAcceleration(int startPos, int endPos, double startStep, double endStep, double perStep)
{
double x = endPos - startPos;
double newXFloat = startPos;
int newX = startPos;
while(true)
{
if (x * (newX - endPos) <= 0)
{
try
{
Thread.sleep(1);
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
component.setLocation(newX, component.getY());
newXFloat = newXFloat + startStep;
newX = (int)newXFloat;
if (perStep * (startStep - endStep) >= 0)
{
startStep = endStep;
}
else
{
startStep += perStep;
}
}
else
{
component.setLocation(endPos, component.getY());
break;
}
}
}
/** 沿 y 轴加速或减速移动窗体 */
public void moveComponentYWithAcceleration(int startPos, int endPos, double startStep, double endStep, double perStep)
{
double y = endPos - startPos;
double newYFloat = startPos;
int newY = startPos;
while(true)
{
if (y * (newY - endPos) <= 0)
{
try
{
Thread.sleep(1);
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
component.setLocation(component.getX(), newY);
newYFloat = newYFloat + startStep;
newY = (int)newYFloat;
if (perStep * (startStep - endStep) <= 0)
{
startStep = endStep;
}
else
{
startStep += perStep;
}
}
else
{
component.setLocation(component.getX(), endPos);
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -