不同作業系統通常會有不同的标題欄和關閉按鈕風格,為了保證我們的程式在各作業系統顯示風格保持一緻,有時候我們需要隐藏窗體的标題欄和邊框,這可以使用Frame的成員函數setUndecorated實作。沒有标題欄的窗體預設不支援滑鼠拖動移動窗體,這就需要我們針對窗體添加對應的監聽器。通常包含一個滑鼠監聽器(MouseListener)和一個滑鼠移動監聽器(MouseMotionListener),下面是一個執行個體:
package Test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TestFrameDemo {
// 全局的位置變量,用于表示滑鼠在視窗上的位置
static Point origin = new Point();
static JFrame myFrame = new JFrame();
public static void main(String[] args) {
myFrame.setUndecorated(true);
myFrame.setSize(600, 400);
myFrame.setVisible(true);
myFrame.addMouseListener(new MouseAdapter() {
// 按下(mousePressed
// 不是點選,而是滑鼠被按下沒有擡起)
public void mousePressed(MouseEvent e) {
// 當滑鼠按下的時候獲得視窗目前的位置
origin.x = e.getX();
origin.y = e.getY();
}
});
myFrame.addMouseMotionListener(new MouseMotionAdapter() {
// 拖動(mouseDragged
// 指的不是滑鼠在視窗中移動,而是用滑鼠拖動)
public void mouseDragged(MouseEvent e) {
// 當滑鼠拖動時擷取視窗目前位置
Point p = myFrame.getLocation();
// 設定視窗的位置
// 視窗目前的位置 + 滑鼠目前在視窗的位置 - 滑鼠按下的時候在視窗的位置
myFrame.setLocation(p.x + e.getX() - origin.x, p.y + e.getY()
- origin.y);
}
});
}
}
這個例子建立了一個窗體,首先使用setUndecorated函數隐藏窗體的邊框和标題欄,并且将窗體的寬度設定為600px,窗體的高度設定為400px,添加了兩個滑鼠監聽器,一個監控滑鼠按下操作,另一個監控滑鼠移動操作。
【發表評論0條 】