我写的设置窗体初始化居中和窗体大小与屏幕的比例类与大家分析
package MyJavaPack.gui;import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Toolkit;
/**设置窗体居中和窗体大小与屏幕的比例*/
class JFrameSize
{
/*存储窗体信息*/
private JFrame frame;
/*储存获取的屏幕的大小。在多显示的系统上,使用主显示。*/
private static Dimension ScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
/**构造方法:创建一个frameSize对象*/
public JFrameSize()
{
}
/**构造方法:创建一个frameSize对象,接收frame对象
* @param jframe JFrame 接收一个JFrame对象
**/
public JFrameSize( JFrame jframe )
{
frame = jframe;
}
/**构造方法:创建一个frameSize对象,接收frame对象并设置它和屏幕的大小百分比例
* @param jframe JFrame 接收一个JFrame对象
* @param again int 屏幕是窗体的agin%
**/
public JFrameSize( JFrame jframe, int agin )
{
frame = jframe;
setAginSize( agin );
}
/**构造方法:创建一个frameSize对象,接收frame对象并设置它和屏幕的大小百分比例并且是否居中显示
* @param jframe JFrame 接收一个JFrame对象
* @param again int 屏幕是窗体的agin%
* @param isCenter boolean 设置窗体是否居中
**/
public JFrameSize( JFrame jframe, boolean isCenter )
{
frame = jframe;
//如果isCenter等于true调用setCenter()方法使窗体在屏幕中居中
if( isCenter )
{
setCenter();
}
}
/**构造方法:创建一个frameSize对象,接收frame对象并设置它和屏幕的大小百分比例并且是否居中显示
* @param jframe JFrame 接收一个JFrame对象
* @param again int 屏幕是窗体的agin%
* @param isCenter boolean 设置窗体是否居中
**/
public JFrameSize( JFrame jframe, int agin, boolean isCenter )
{
frame = jframe;
setAginSize( agin );
//如果isCenter等于true调用setCenter()方法使窗体在屏幕中居中
if( isCenter )
{
setCenter();
}
}
/**此方法设置frameSize接收一个JFrame对象
* @param jframe JFrame 接受JFrame对象
**/
public void setJFrame( JFrame jframe )
{
frame = jframe;
}
/**
* 设置窗体大小与屏幕的百分比例
* @param agin int 窗体大小与屏幕的百分比例
**/
public void setAginSize( int aign )
{
frame.setSize( (int) ( aign / 100.0 * ScreenSize.width ),
( int ) ( aign / 100.0*ScreenSize.height ) );
}
/**每次调用此方法时窗体会在屏幕中居中*/
public void setCenter()
{
if( frame.getWidth() > ScreenSize.width )
{
frame.setSize( ScreenSize.width, frame.getHeight() );
}
if( frame.getHeight() > ScreenSize.height )
{
frame.setSize( frame.getWidth(), ScreenSize.height );
}
frame.setLocation( ( ScreenSize.width - frame.getWidth() ) / 2,
( ScreenSize.height - frame.getHeight() ) / 2 );
}
}