首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Swing 視窗置中顯示的標準實作與螢幕尺寸動態獲取技巧

     編輯:Java 相關知識

讓 JFrame 完美置中:從數學原理到 Toolkit 實戰

開發 Java 桌面應用時,視窗置中是基礎且關鍵的使用者體驗細節。本文將從座標計算邏輯出發,詳解如何利用 AWT Toolkit 動態獲取螢幕解析度,實現跨平台、跨解析度的視窗完美置中。

核心邏輯:幾何座標換算

假設螢幕解析度 800x600,視窗大小 200x200。螢幕中心點為 (400, 300)。為使視窗中心與螢幕中心重合,視窗左上角座標應設為:
X = 螢幕寬/2 - 視窗寬/2 = 400 - 100 = 300
Y = 螢幕高/2 - 視窗高/2 = 300 - 100 = 200

關鍵 API:Toolkit.getScreenSize()

由於使用者執行環境的螢幕尺寸不固定,必須在執行期動態獲取。java.awt.Toolkit 提供了跨平台的解決方案:

// 一行程式碼獲取螢幕尺寸 Dimension 物件
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height;

完整實作範例

import javax.swing.*;
import java.awt.*;

public class CenterFrameDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("置中視窗範例");
        frame.setSize(400, 300); // 設定視窗大小
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 1. 獲取螢幕尺寸
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        // 2. 獲取視窗尺寸
        Dimension frameSize = frame.getSize();

        // 3. 計算左上角座標
        int x = (screenSize.width - frameSize.width) / 2;
        int y = (screenSize.height - frameSize.height) / 2;

        // 4. 設定位置並顯示
        frame.setLocation(x, y);
        frame.setVisible(true);
    }
}

進階提示:JDK 1.4+ 的更簡潔寫法

自 JDK 1.4 起,JFrame 內建 setLocationRelativeTo(null) 方法,一行即可完成置中,內部原理相同,建議優先使用:

frame.setLocationRelativeTo(null); // null 代表相對螢幕置中

總結

掌握螢幕尺寸動態獲取與座標換算邏輯,不僅能解決視窗置中問題,更能舉一反三應用於彈出對話框、工具提示等 UI 定位場景。現代開發建議直接使用 setLocationRelativeTo(null),簡潔且不易出錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved