Java Swing JPanel和JScrollPane面板的用法(附带实例)
在 Swing 程序设计中,面板是一个容器,用于容纳其他组件,但面板必须添加到其他容器中。
Swing 中常用的面板包括 JPanel 面板和 JScrollPane 面板。下面将分别予以讲解。
【实例】在一个窗体中显示 4 种布局风格的面板。创建 JPanelTest 类,并继承 JFrame 类。首先设置窗体的布局管理器为 2 行 2 列的网格布局管理器,然后创建 4 个面板,并为这 4 个面板设置不同的布局管理器,最后向每个面板中添加按钮。

图 1 JPanel面板的应用
需要注意的是,JScrollPane 滚动面板不能使用布局管理器,且只能容纳一个组件。如果需要向 JScrollPane 面板中添加多个组件,那么需要先将多个组件添加到 JPanel 面板中,再将 JPanel 面板添加到 JScrollPane 滚动面板中。
【实例】为窗体添加上下滚动条。创建 JScrollPaneTest 类,并继承 JFrame 类。首先初始化文本域组件,并指定文本域组件的大小;然后创建一个 JScrollPane 面板,并把文本域组件添加到 JScrollPane 面板中;最后把 JScrollPane 面板添加到窗体中。

图 2 JScrollPane 面板的使用
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 面板的使用
图中文字内容是笔者在编辑器窗口中输入的。
相关文章
- Java Swing.JFrame的用法(附带实例)
- Java Swing JDialog对话框的用法(附带实例)
- Java Swing JOptionPane对话框用法详解(附带实例)
- Java Swing FlowLayout布局管理器的用法(附带实例)
- Java Swing BorderLayout布局管理器的用法(附带实例)
- Java Swing JLabel标签的用法(附带实例)
- Java Swing ImageIcon图标类的用法(附带实例)
- Java Swing JButton按钮的用法(附带实例)
- Java Swing JRadioButton单选按钮的用法(附带实例)
- Java语句:Java空语句、复合语句和表达式语句