JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案
生活随笔
收集整理的這篇文章主要介紹了
JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
解決方案?
1、實(shí)時(shí)獲取父窗口坐標(biāo)的方法是給父窗口添加如下監(jiān)聽
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("當(dāng)前窗口在大小:" + comp.getHeight() + "," + comp.getWidth());}@Overridepublic void componentMoved(ComponentEvent e) {Component comp = e.getComponent();System.out.println("當(dāng)前窗口在屏幕中的位置:" + comp.getX() + "," + comp.getY());//更新當(dāng)前窗口所在的坐標(biāo)MAIN_FRAME_LOC_X = comp.getX();MAIN_FRAME_LOC_Y = comp.getY();}});2、計(jì)算公式及核心代碼
??int x =?父窗口X坐標(biāo)/2 +?父窗口寬度/2 -?JDialog窗口寬度/2
??int y =?父窗口Y坐標(biāo)/2 +?父窗口高度/2 -?JDialog窗口高度/2
//MAIN_FRAME_LOC_X? 是父窗口所處的x坐標(biāo)
//MAIN_FRAME_LOC_Y? 是父窗口所處的y坐標(biāo)
//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);注:如果窗口對(duì)象調(diào)用了pack()方法,那么該窗口在應(yīng)用上述方法后可能會(huì)在視覺上出現(xiàn)窗口偏離中央的情況,這時(shí)你需要取消調(diào)用pack()方法 或者?將主窗口的尺寸設(shè)置為組件一樣的尺寸。?
參考文章
https://blog.csdn.net/PursueExcellence/article/details/80468888
總結(jié)
以上是生活随笔為你收集整理的JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA——一次性读取或者写入文本文件所
- 下一篇: JAVA——赫夫曼编码-译码器(Huff