在Swing开发过程中,可能有时为了界面外观表现一致风格,需要将系统标题栏装饰取消不显示。在没有标题栏的情况下,应用程序窗体的最小化、最大化、还原、重置大小、窗体移动等则需要自己实现。
下面代码实现了无标题栏时进行窗口移动:
public class Test {
private JFrame f = new JFrame();
private int x, y;
public void init(){
// 设置取消标题栏
f.setUndecorated(true);
f.setSize(200, 200);
f.setVisible(true);
f.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
System.out.println("鼠标按下");
x = e.getX();
y = e.getY();
}
});
f.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
System.out.println("鼠标拖动");
int left = f.getLocation().x;
int top = f.getLocation().y;
f.setLocation(left + e.getX() - x, top + e.getY() - y);
}
});
}
public static void main(String[] args) {
new Test().init();
}
}