如果要使用Swing创建一个窗口,则直接使用JFrame即可。JFrame是Component的子类,常用的方法如下表所示:
序号 | 方法 | 描述 |
---|---|---|
1 | public JFrame() throws HeadlessException | 构造一个普通的窗体对象 |
2 | public JFrame(Sting title) throws HeadlessException | 创建一个窗体对象,标题为title |
3 | public void setSize(int width,int heigth) | 设置窗体宽度,高度 |
4 | public void setSize(Dimension d) | 通过Dimension对象来设置窗体的宽度和高度 |
5 | public void setBackground(Color c) | 设置窗体的背景颜色 |
6 | public void setLocation(int x,int y) | 设置组件的显示位置 |
7 | public void setLocation(Point p) | 通过Point对象来设置窗体的显示位置 |
8 | public void setVisible(boolean b) | b真则显示组件,假则不显示组件 |
9 | public Component add(Component comp) | 向容器中添加组件 |
10 | public void setLayout(LayoutManager mgr) | 设置布局管理器,如果设置为null表示不使用 |
11 | public void pack() | 调整窗口大小,以适合其子组件的首先大小和布局 |
12 | public Container getContainer() | 返回子窗体的容器对象 |
实例1:创建一个窗体
package java1.awt.test;
import javax.swing.JFrame ;
import java.awt.Color ;
public class JFrameDemo01{
public static void main(String args[]){
JFrame f = new JFrame("第一个Swing窗体") ;
f.setSize(400,200) ; // 设置组件的大小:宽度400,高度200
f.setBackground(Color.BLUE) ; // 将背景设置成蓝色
f.setLocation(500,100) ; // 设置组件的在屏幕中的显示位置:距离屏幕左边500,距离屏幕上边100
f.setVisible(true) ; // 让组件可见
}
};
运行结果:
以上程序运行之后,会直接显示一个窗体。在上述代码中最重要的就是setVisible(true)
,如果没有这句话,窗体则不会显示,这是因为创建的创建的窗体默认是不可见的。
虽然现在窗体上有关闭按钮,但是此时按钮无法让程序退出。关闭窗体后此时eclipse中仍然可以看到小红点在亮着,说明程序还没退出,需要在eclipse中手动关闭,如下图所示。
之所以点击窗体上面的关闭按钮,程序还没有退出是因为在Swing程序中,要想让窗口的关闭按钮起作用,则必须编写相关的事件进行处理。
在JFrame中也可以使用Dimension类设置窗体的大小,此类封装的是组件的宽度和高度。Dimension类的常用操作方法如下表所示。
序号 | 方法 | 描述 |
---|---|---|
1 | public Dimension() | 创建一个Dimension类实例 |
2 | Public setSize(double width,double height) | 设置显示的宽度和高度 |
3 | public setSize(int width,int height) | 设置显示的宽度和高度 |
4 | public double getWidth() | 返回组件的宽度 |
5 | public double getHeight() | 返回组件的高度 |
除了设置组件大小可以使用Dimension外,对于组件的显示位置也可以存在一个Point类,此类封装的是显示位置的x,y坐标。Point类常用操作方法如下表所示:
序号 | 方法 | 描述 |
---|---|---|
1 | public Point() | 在坐标原点创建对象 |
2 | public Point(int x,int y) | 在(x,y)坐标创建对象 |
3 | public void setLocation(double x,double y) | 设置x,y坐标 |
4 | public void setLocation(int x,int y) | 设置x,y坐标 |
5 | public void move(int x,int y) | 将此组件移动到指定的坐标位置,与setLocation(int,int)方法相同 |
6 | public void translate(int dx,int dy) | 沿着x轴平移dx,沿着y轴平移dy,移动后得到点:(x+dx,y+dy) |
实例:使用Dimension和Point类设置组件大小和显示位置
package java1.awt.test;
import javax.swing.JButton;
import javax.swing.JFrame ;
import javax.swing.JPanel;
import java.awt.Color ;
import java.awt.Dimension ;
import java.awt.Point ;
public class JFrameDemo02{
public static void main(String args[]){
JFrame f = new JFrame("第一个Swing窗体") ; //创建一个窗体
Dimension d = new Dimension() ;
d.setSize(400,200) ;
f.setSize(d) ; // 设置组件的大小
f.setBackground(Color.RED) ; // 将背景设置成白色
Point p = new Point(300,200) ; // 指定组件的显示位置
JPanel jPanel=new JPanel();
JButton button1=new JButton("按钮1");
JButton button2=new JButton("按钮2");
JButton button3=new JButton("按钮3");
jPanel.add(button1);//添加一个按钮
jPanel.add(button2);
jPanel.add(button3);
f.add(jPanel);
// f.pack();//以窗体中组件的大小来显示窗口
f.setLocation(p) ; // 设置组件的显示位置
f.setVisible(true) ; // 让组件可见
}
};
程序运行结果:
总结:
JFrame就是一个容器,在该容器上可以安装多个组件。
问答部分:
问:为什么在实例化Frame对象是不用异常处理?
Frame类的构造方法上使用了throws关键字抛出异常,为什么在此时的程序中却没有使用try…catch语句来进行异常处理呢。
答:
Java中只要是RuntimeException类型的异常,可以不用try…catch处理。这里HeadlessException是RuntimeException类型的,所以在上面的两个实例中不需要进行异常处理。