java GUI ---容器

本篇文章主要介绍JFrame、JPanel、JScorllPane三个容器!!!

1.JFrame–顶层容器

屏幕上显示的所有的组件都必须包含在某个容器中,而有些容器是可以嵌套的,在这个嵌套层次的最外层必须是一个顶层容器。Swing中共提供了4中顶层容器,分别是JFrame、JApplet、JDialog、JWindow。JFrame是一个 带有标题行和控制按钮的独立窗口,是带边框的,创建应用程序时需要使用JFrame。创建小应用程序时使用JApplet,它被包含在浏览器窗口中。创建对话框时使用JDialog。JWindow是一个不带有标题行和控制按钮的窗口,通常很少使用。这里主要介绍JFrame。
JFrame是Java application程序的GUI容器,JFrame

作为顶层容器,不能被其他容器包含,但可以被其他的容器创建并弹出作为独立的容器。

JFrame继承自java.awt.Frame类,JFrame的继承关系如下图:
这里写图片描述
JFrame类常用的构造方法有以下两种

JFrame();   //不带参数的构造方法,该方法用于创建一个初始不可见的新窗体
JFrame(String title);   //带一个字符串参数的构造方法,该方法用于创建一个初始不可见的新窗体,
                        //且窗口的标题由字符长参数指定

JFrame常用方法列表:

protected void frameInit(); //在构造方法中调用该方法来初始化窗体
public Component add(Component comp);  //该方法从Container类中继承而来,用于向窗口中添加组件
public void setLocation(int x,int y);  //该方法从Component 类中继承而来,用于设置窗口的位置坐标(以像素为单位)
public void setSize(int width,int height);  //该方法Window类中继承而来,用于设置窗口的大小(以像素为单位)
public void setVisible(boolean b);  //从window类中继承而来,用于设置窗口是否可视
public void setComponent(Container contentPane);  //设置容器的面板容器
public void setIconImage(Image image);  //设置窗体左上角的图标
public void setJMenuBar(JMenuBar menubar);  //设置窗体的菜单栏
public void setDefaultCloseOperation(int operation);  //设置用户对此窗体的默认关闭操作,
                                                      //该操作的参数是常量,必须是以下选项之一:
                                                      // - DO_NOTHING_ON_CLOSE---不执行任何操作
                                                      // - HIDE_ON_CLOSE---自动隐藏该窗体
                                                      // - DISPOSE_ON_CLOSE---自动隐藏并释放该窗体
                                                      // - EXIT_ON_CLOSE---退出应用程序

实例:

package awt;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.IOException;
import javax.swing.*;

public class myJframe extends JFrame{
    private static final long serialVersionUID = 1L;


    public myJframe(int width,int height,String title) {
        super("JFrame");
        this.setSize(width,height);

        //设置窗口的位置
        this.setLocation(400,400);

        //设置窗体的默认退出关闭操作
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setVisible(true);
    }

    public static void main(String args[]) throws IOException {
        mainFrame = new myJframe(width,height,"JFrame");
    }

}

在完成窗口的框架定义后,我们会得到一个JAVA的窗口,这个时候我们就相当于得到了一个窗户的架子,我们想在窗子上画画是不行的(毕竟不能再空气上画画嘛),这个时候我们就要在窗框(JFrame)上装个玻璃才能画画对吧。这个玻璃在java中就叫做窗格,也叫内容窗格。
对于所有的顶层容器都有一个内容窗格(ContentPanel),顶层容器中除菜单栏外所有的组件都放在内容窗格中。要想得到内容窗格有两种方法:

  • 通过顶层容器的getContentPane()方法获得其默认的内容窗格,该方法返回一个java.awt.Container,仍然是一个容器,然后就可以将组建添加到内容窗格上
Container contentPane = frame.getContentPane();
contentPane.add(button,BorderLayout.CENTER);
  • 通过创建一个新的内容窗格取代顶层容器的默认窗格。方法见JPanel。

2.JPanel—中间容器

首先谈谈什么叫中间容器?
中间容器与顶级容器不同,不能独立存在,必须放在其他容器中。
JPanel是无边框的,不能被移动、缩放或者关闭的容器。它支持双缓冲功能,在处理动画上较少发生画面的闪烁的情况。JPanel类继承自javax.swing.JComponent类。使用时,通常先将其他组将加入到JPanel中,然后再将JPanel加入到顶级容器中。
JPanel类的继承关系层次如图示:
这里写图片描述
JPanel的常用构造方法有以下两种:

扫描二维码关注公众号,回复: 2373391 查看本文章

JPanel(); //不带参数,构造一个默认为流布局(FlowLayout)的面板
JPanel(LayoutManger layout); //按照参数所指的布局方式构造一个面板
JPanel常用的方法:

public Component add(Component comp);   //向面板中添加组件
public void setLayout(LayoutManger mgr);   //设置面板的布局

实例:

package awt;

import awt.myJframe; //引用上个例子中创建的myJrame
import java.io.IOException;

import javax.swing.*;

public class myJpanel{


    public myJpanel() {
        JPanel p = new JPanel();
        myJframe frame = new myJframe(400,300,"JPanel");

        JButton bt_ok = new JButton("OK");
        JButton bt_cancel = new JButton("cancel");

        p.add(bt_ok);
        p.add(bt_cancel);
        frame.add(p);

        frame.setVisible(true);
    }

    public static void main(String args[]) throws IOException, InterruptedException {
        new myJpanel();
    }

}


3.JScrollPane—中间容器

JScrollPane也是一个容器,称为滚动窗口。可以把一个组件放到滚动窗口中,通过滚动条查看组件。特殊的是,只能向滚动窗口中添加一个组件,故常将组建加入到一个容器中,再加入到滚动容器中。
JScorllPane类的继承关系如下图:
这里写图片描述
JScrollPane的构造方法有以下几种:

JScrollPane();  //创建一个空的滚动窗口,需要时水平和垂直滚动条都可显示
JScrollPane(int vsbPolicy,int hsbPolicy);   //按照指定的滚动条策略创建一个空的滚动容器
JScrollPane(Component view);   //创建一个显示指定组件内容的JScorllPane,需要时会显示滚动条

常用方法:

public void setHorizontalScrollBarPolicy(int policy);   //确定水平滚动条何时显示,取值如下:
                //JScorllPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED  在需要时显示,默认策略
                //JScorllPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEVER   永不显示
                //JScorllPaneConstants.HORIZONTAL_SCROLLBAR_AS_ALWAYS  一直显示

public void setVerticalScrollBarPolicy(int policy);   //确定垂直滚动条何时显示,取值类似水平滚动条
public void setViewportView(Component view);   //创建一个视口并设置其试图

例子如下:

package awt;

import awt.myJframe;
import javax.swing.*;

public class myJscorllpane{

    public myJscorllpane() {
        JScrollPane sp = new JScrollPane();
        sp.setSize(100,50);
        sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        JPanel p = new JPanel();
        myJframe frame = new myJframe(400,300,"JScrollPanel");

        JButton bt_ok = new JButton("OK");
        JButton bt_cancel = new JButton("cancel");

        p.add(bt_ok);
        p.add(bt_cancel);
        sp.setViewportView(p);
        frame.add(sp);

        sp.setVisible(true);
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        new myJscorllpane();
    }

}

猜你喜欢

转载自blog.csdn.net/miha_singh/article/details/80303252