作者:云小白 | 来源:互联网 | 2023-05-17 12:21
如何设窗口的初始显示位置(要与分辩率无关)请教----1.如题:例如---我想初始显示一个窗口在特定位置(如靠右下角),可否保证这个位置无论是在800*640或1024*768(或更高一点)上
如何设窗口的初始显示位置(要与分辩率无关)
请教----
1.如题:例如---我想初始显示一个窗口在特定位置(如靠右下角),可否保证这个位置无论是在800*640或1024*768(或更高一点)上都没太大的差异。这个窗口可能是message dialog,或由JFrame定义的。看过document,发现可能是应用setlocation(),和一个setbounds()之类的methods来实现,实现思想是先设定bounds,然后再用setlocation来定位。我也不知对不对。不是的话,应如何做,讲一下思路和应用哪些methods。
2.还有,我想将一个窗口(不是YES/NO的窗口)的显示初始值,设为在正中间(center)显示,但好象没有一个值或methods可直接设的。难道这也要用上面那个方法来取中间显示?
13 个解决方案
可以自己写个方法,getToolkit().getScreenSize()(可能不一定这样写,大体是这样,得到屏幕大小),然后屏幕长-窗口长再除以2,宽也同样。这样就在中间了。就是相对坐标。
1:Dimension screenSize = getToolkit().getScreenSize();
Dimension mainFrameSize = getSize();
setLocation(screenSize.width - mainFrameSize.width , screenSize.height - mainFrameSize.height );
2:你的窗口是dialog还是JOptionPane.show()出来的?
忍不住说一句
这种加加减减能有效?
从小学就开始学地理,但是看来你们对地图上的比例尺都还没理解
要让位置与具体的分辨率无关,偶想必须要用到比例尺吧, 长,宽,起始位置
都按比例确定
//======================== 置中Frame 的方法 =================
private void centerWin(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
Dimension labelSize = jWindow.getPreferredSize();
int labelWidth = labelSize.width;
int labelHeight = labelSize.height;
jWindow.setLocation(screenSize.width/2-(labelWidth/2),screenSize.height/2-(labelHeight/2));
jWindow.pack();
}
//---------------------------------
jWindow 可以使任何 Frame
TO drinkant(喝酒的蚂蚁) :
这样取到的屏幕大小就是它实际的大小,不管他是800*600还是别的。你所谓的比例尺什么的东西都被隐藏在内部,根本就是程序员不用具体涉及的。不然你想为每一种分辨率写一个方法???呵呵
搞笑阿你
偶目前写的程序就是用了比例尺的
你可以在假设分辨率1024*768下确定位置,尺寸
程序运行的时候再获取当前的分辨率,然后按比例放大或者缩小
很不明白你所说的每种分辨率都写一个方法是甚么意思
按照偶得方法只需一个函数就能搞定任何分辨率
他自己说要位置跟分辨率无关的嘛, 偶说得方法的确可以达到这个效果
to:drinkant(喝酒的蚂蚁)
我问的是有这个意思的,原意是希望可以达到与solution无关,那么,兄台,你那个比例尺,思想是如何实现的,复不复杂?
to: bhr(追风)
2.不是dialog.
置中那个问题,基本没问题了。
但当要在特定位置显示,而又可保证在不同的solution下,效果都没太大差异,那我想就要用比例尺。不过这家伙可能比较复杂!?
比例尺也是用相对位置,并且还要用到一个假定分辨率,原理是一样的,都要得到当前屏幕分辨率和窗口大小。
不说了, 好没意思
你们考虑的最多只是个别情况<居中,右下脚...>, 偶所说的是一个普适的方法
要是大家都不理解偶也懒得在说了