JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案
生活随笔
收集整理的這篇文章主要介紹了
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)位置居于父窗口中央的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA——一次性读取或者写入文本文件所
- 下一篇: JAVA——赫夫曼编码-译码器(Huff