首页 > 编程笔记 > Java笔记 阅读:12

Java Swing JPanel和JScrollPane面板的用法(附带实例)

在 Swing 程序设计中,面板是一个容器,用于容纳其他组件,但面板必须添加到其他容器中。

Swing 中常用的面板包括 JPanel 面板和 JScrollPane 面板。下面将分别予以讲解。

Swing JPanel面板

JPanel 面板继承 java.awt.Container 类。JPanel 面板必须在窗体容器中使用,无法脱离窗体显示。

【实例】在一个窗体中显示 4 种布局风格的面板。创建 JPanelTest 类,并继承 JFrame 类。首先设置窗体的布局管理器为 2 行 2 列的网格布局管理器,然后创建 4 个面板,并为这 4 个面板设置不同的布局管理器,最后向每个面板中添加按钮。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class JPanelTest extends JFrame {
    public JPanelTest() {
        Container c = getContentPane();
        //将整个容器设置为2行2列的网格布局,组件水平间隔10像素,垂直间隔10像素
        c.setLayout(new GridLayout(2, 2, 10, 10));
        //初始化一个面板,此面板使用1行4列的网格布局,组件水平间隔10像素,垂直间隔10像素
        JPanel p1 = new JPanel(new GridLayout(1, 4, 10, 10));
        //初始化一个面板,此面板使用边界布局
        JPanel p2 = new JPanel(new BorderLayout());
        //初始化一个面板,此面板使用1行2列的网格布局,组件水平间隔10像素,垂直间隔10像素
        JPanel p3 = new JPanel(new GridLayout(1, 2, 10, 10));
        //初始化一个面板,此面板使用2行1列的网格布局,组件水平间隔10像素,垂直间隔10像素
        JPanel p4 = new JPanel(new GridLayout(2, 1, 10, 10));
        //给每个面板都添加边框和标题,使用BorderFactory工厂类生成带标题的边框对象
        p1.setBorder(BorderFactory.createTitledBorder("面板 1"));
        p2.setBorder(BorderFactory.createTitledBorder("面板 2"));
        p3.setBorder(BorderFactory.createTitledBorder("面板 3"));
        p4.setBorder(BorderFactory.createTitledBorder("面板 4"));
        //向面板1中添加按钮
        p1.add(new JButton("b1"));
        p1.add(new JButton("b1"));
        p1.add(new JButton("b1"));
        //向面板2中添加按钮
        p2.add(new JButton("b2"), BorderLayout.WEST);
        p2.add(new JButton("b2"), BorderLayout.EAST);
        p2.add(new JButton("b2"), BorderLayout.NORTH);
        p2.add(new JButton("b2"), BorderLayout.SOUTH);
        p2.add(new JButton("b2"), BorderLayout.CENTER);
        //向面板3中添加按钮
        p3.add(new JButton("b3"));
        p3.add(new JButton("b3"));
        //向面板4中添加按钮
        p4.add(new JButton("b4"));
        p4.add(new JButton("b4"));
        //向容器中添加面板
        c.add(p1);
        c.add(p2);
        c.add(p3);
        c.add(p4);
        setTitle("在这个窗体中使用了面板"); //窗体标题
        setSize(500, 300); //窗体宽高
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); //关闭动作
    }

    public static void main(String[] args) {
        JPanelTest test = new JPanelTest();
        test.setVisible(true);
    }
}
运行结果为:

图 1 JPanel面板的应用

Swing JScrollPane滚动面板

JScrollPane 面板是带滚动条的面板,用于在较小的窗体中显示较大篇幅的内容。

需要注意的是,JScrollPane 滚动面板不能使用布局管理器,且只能容纳一个组件。如果需要向 JScrollPane 面板中添加多个组件,那么需要先将多个组件添加到 JPanel 面板中,再将 JPanel 面板添加到 JScrollPane 滚动面板中。

【实例】为窗体添加上下滚动条。创建 JScrollPaneTest 类,并继承 JFrame 类。首先初始化文本域组件,并指定文本域组件的大小;然后创建一个 JScrollPane 面板,并把文本域组件添加到 JScrollPane 面板中;最后把 JScrollPane 面板添加到窗体中。
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;

public class JScrollPaneTest extends JFrame {
    public JScrollPaneTest() {
        Container c = getContentPane(); //获取主容器
        //创建文本区域组件,文本域默认大小为 20 行、50 列
        JTextArea ta = new JTextArea(20, 50);
        //创建 JScrollPane 滚动面板,并将文本域放到滚动面板中
        JScrollPane sp = new JScrollPane(ta);
        c.add(sp); //将该面板添加到主容器中
        setTitle("带滚动条的文字编译器");
        setSize(400, 200);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    }

    public static void main(String[] args) {
        JScrollPaneTest test = new JScrollPaneTest();
        test.setVisible(true);
    }
}
运行结果如下图所示:


图 2 JScrollPane 面板的使用

图中文字内容是笔者在编辑器窗口中输入的。

相关文章