按照屏幕比例改变窗口大小
2024年03月08日
Java Abstract Window Toolkit(AWT,抽象窗口工具包)允许开发者通过setSize方法按照点来精确改变窗口大小。不过有时候用百分比或比例来指定窗口大小更容易。下面的这个基本方法可以实现以上功能。窗口大小是一个“int”值,所以先将double值转换为int,改变值就可以改变窗口大小了。
/**
*Resizes the given window to the givenratio of the screen size
*
* param w Window to resize.
* param ratioX double value to changethe window horizontal size to.
* param ratioY double value to changethe window vertical size to.
*/
static public void sizeWindowOnScreen(Window w double ratioX double ratioY)
{
//java.awt.Toolkit
Toolkit tk=w.getToolkit();
//java.awt.Dimension
Dimension scrn=tk.getScreenSize();
w.setSize(new Dimension((int)(scrn.width*ratioX)
(int)(scrn.height*ratioY)
));
}
static public void sizeWindowOnScreen(Window w double ratio){
sizeWindowOnScreen(w ratio ratio);
}
不少开发者还是喜欢用百分比而不是比例(ratios)。比例和百分比之间只是一个数学上的转换,并不影响API对方法的调用。
应该确保经常用到方法,这样,每个逻辑大小会被存放在不同区域,通过使用sizeWindowOnScreen(Window,double,double)方法,百分比与比例的转换会在一个区域里进行,实际的大小不是被拷贝而是被重用了。例如:
static publicvoid resizeWindowToScreenPercentage(Window w double perc){
resizeWindowToScreenPercentage(wperc perc);
}
static public void resizeWindowToScreenPercentage(Window w double percX double percY)
{
sizeWindowOnScreen(w percX/100percY/100);
}
最后,也许有人希望把窗口大小设定为屏幕大小,MaxWindowOnScreen这个方法可以实现上述功能。如下所示:
static publicvoid maxWindowOnScreen(Window w){
sizeWindowOnScreen(w 1.0 1.0);
}