import javax.swing.UIManager;
import java.awt.*;public class Student
{
boolean packFrame = false;//构造函数
public Student()
{
MainFrame frame = new MainFrame();//新窗口
if (packFrame)
{
frame.pack();//调整此窗口的大小,以适合其子组件的首选大小和布局
}
else
{
frame.validate();//验证此容器及其所有子组件
}
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕大小,Dimension封装单个对象中组件的宽度和高度(精确到整数)。
Dimension frameSize = frame.getSize();//窗口大小 if (frameSize.height > screenSize.height)
{
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width)
{
frameSize.width = screenSize.width;
}
frame.setLocation( (screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);//调整窗口大小是屏幕的一半
frame.setVisible(true);//窗口可见
}
//main方法
public static void main(String[] args)
{
try //扑捉异常
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//将外观设置为系统外观
}
catch (Exception e)
{
e.printStackTrace();//处理异常
}
new Student();
}}
import java.awt.*;public class Student
{
boolean packFrame = false;//构造函数
public Student()
{
MainFrame frame = new MainFrame();//新窗口
if (packFrame)
{
frame.pack();//调整此窗口的大小,以适合其子组件的首选大小和布局
}
else
{
frame.validate();//验证此容器及其所有子组件
}
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕大小,Dimension封装单个对象中组件的宽度和高度(精确到整数)。
Dimension frameSize = frame.getSize();//窗口大小 if (frameSize.height > screenSize.height)
{
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width)
{
frameSize.width = screenSize.width;
}
frame.setLocation( (screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);//调整窗口大小是屏幕的一半
frame.setVisible(true);//窗口可见
}
//main方法
public static void main(String[] args)
{
try //扑捉异常
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//将外观设置为系统外观
}
catch (Exception e)
{
e.printStackTrace();//处理异常
}
new Student();
}}
并且此student窗口会自动根据窗口内容调整大小
(screenSize.height - frameSize.height) / 2);//调整窗口大小是屏幕的一半
这句的注释错了javadoc里的:public void setLocation(int x,
int y)
Moves this component to a new location. The top-left corner of the new location is specified by the x and y parameters in the coordinate space of this component's parent. 这句话不是“调整窗口大小是屏幕的一半”,而是让该窗口的位置在屏幕的正中窗口的大小是这两句话设置的:
if (frameSize.height > screenSize.height)
{
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width)
{
frameSize.width = screenSize.width;
} 如果窗口的初始大小比屏幕大,就缩小为屏幕那么大
取决于你其他设置窗口初始大小的地方了,这段代码里没有