Java GUI编程3---基本容器:JFrame

如果要使用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) ;           // 让组件可见
        }
};

运行结果:
Java GUI编程3---基本容器:JFrame_第1张图片
以上程序运行之后,会直接显示一个窗体。在上述代码中最重要的就是setVisible(true),如果没有这句话,窗体则不会显示,这是因为创建的创建的窗体默认是不可见的。
虽然现在窗体上有关闭按钮,但是此时按钮无法让程序退出。关闭窗体后此时eclipse中仍然可以看到小红点在亮着,说明程序还没退出,需要在eclipse中手动关闭,如下图所示。
Java GUI编程3---基本容器:JFrame_第2张图片
之所以点击窗体上面的关闭按钮,程序还没有退出是因为在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) ;            // 让组件可见
    }
};

程序运行结果:
Java GUI编程3---基本容器:JFrame_第3张图片

总结:

JFrame就是一个容器,在该容器上可以安装多个组件。

问答部分:

问:为什么在实例化Frame对象是不用异常处理?
Frame类的构造方法上使用了throws关键字抛出异常,为什么在此时的程序中却没有使用try…catch语句来进行异常处理呢。
答:
Java中只要是RuntimeException类型的异常,可以不用try…catch处理。这里HeadlessException是RuntimeException类型的,所以在上面的两个实例中不需要进行异常处理。

你可能感兴趣的:(java)