日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案

發布時間:2024/10/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決方案?

1、實時獲取父窗口坐標的方法是給父窗口添加如下監聽

addComponentListener(new ComponentAdapter() {@Overridepublic void componentResized(ComponentEvent e) {Component comp = e.getComponent();MAIN_FRAME_HEIGHT=comp.getHeight();MAIN_FRAME_WIDTH=comp.getWidth();System.out.println("當前窗口在大小:" + comp.getHeight() + "," + comp.getWidth());}@Overridepublic void componentMoved(ComponentEvent e) {Component comp = e.getComponent();System.out.println("當前窗口在屏幕中的位置:" + comp.getX() + "," + comp.getY());//更新當前窗口所在的坐標MAIN_FRAME_LOC_X = comp.getX();MAIN_FRAME_LOC_Y = comp.getY();}});

2、計算公式及核心代碼

??int x =?父窗口X坐標/2 +?父窗口寬度/2 -?JDialog窗口寬度/2

??int y =?父窗口Y坐標/2 +?父窗口高度/2 -?JDialog窗口高度/2

//MAIN_FRAME_LOC_X? 是父窗口所處的x坐標

//MAIN_FRAME_LOC_Y? 是父窗口所處的y坐標

//MAIN_FRAME_WIDTH? 是父窗口所處的寬度

//MAIN_FRAME_HEIGHT是父窗口所處的高度

int x = MAIN_FRAME_LOC_X - (int) subWindowSize.getWidth() / 2 + MAIN_FRAME_WIDTH/2; int y = MAIN_FRAME_LOC_Y - (int) subWindowSize.getHeight() / 2 + MAIN_FRAME_HEIGHT/2; dialog.setLocation(x, y);

注:如果窗口對象調用了pack()方法,那么該窗口在應用上述方法后可能會在視覺上出現窗口偏離中央的情況,這時你需要取消調用pack()方法 或者?將主窗口的尺寸設置為組件一樣的尺寸。?

參考文章

https://blog.csdn.net/PursueExcellence/article/details/80468888

總結

以上是生活随笔為你收集整理的JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。