java常用面板JPanel及JScrollPane讲解

面板也是一个Swing容器,它可以作为容器容纳其他组件,但它也 必须被添加到其他容器中。Swing中常用的面板包括JPanel面板以及 JScrollPane面板。下面着重讲解Swing中的常用面板。

JPanel面板

JPanel面板可以聚集一些组件来布局。读者首先应该明确的是面板 也是一种容器,因为它也继承自java.awt.Container类。

例子给出一个小程序,在窗体中使用了4个面板,然后在每个面 板中设置布局管理器,最后分别在4个面板中放置一些组件。

【例】在项目中创建JPanelTest类,该类继承JFrame类成为窗 体组件,在该类中创建4个JPanel面板组件,并将它们添加到窗体中。本实例关键代码如下:

package com.lzw;

import java.awt.*;

import javax.swing.*;

public class JPanelTest extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public JPanelTest() {
		Container c = getContentPane();
		// 将整个容器设置为2行1列的网格布局
		c.setLayout(new GridLayout(2, 1, 10, 10));
		// 初始化一个面板,设置1行3列的网格布局
		JPanel p1 = new JPanel(new GridLayout(1, 3, 10, 10));
		JPanel p2 = new JPanel(new GridLayout(1, 2, 10, 10));
		JPanel p3 = new JPanel(new GridLayout(1, 2, 10, 10));
		JPanel p4 = new JPanel(new GridLayout(2, 1, 10, 10));
		p1.add(new JButton("1")); // 在面板中添加按钮
		p1.add(new JButton("1"));
		p1.add(new JButton("2"));
		p1.add(new JButton("3"));
		p2.add(new JButton("4"));
		p2.add(new JButton("5"));
		p3.add(new JButton("6"));
		p3.add(new JButton("7"));
		p4.add(new JButton("8"));
		p4.add(new JButton("9"));
		c.add(p1); // 在容器中添加面板
		c.add(p2);
		c.add(p3);
		c.add(p4);
		setTitle("在这个窗体中使用了面板");
		setSize(420, 200);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new JPanelTest();
	}
}
在应用程序中使用面板
在应用程序中使用面板

在本实例中,首先设置整个窗体的布局为2行1列的网格布局,然后 先后定义4个面板,分别为4个面板设置网格布局,当然,行列数会有所 不同,将按钮放置在每个面板中,最后将面板添加至容器中。

JScrollPane面板

在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大 部分的内容的情况,这时可以使用JScrollPane面板。JScrollPane面板是 带滚动条的面板,它也是一种容器,但是JScrollPane只能放置一个组 件,并且不可以使用布局管理器。如果需要在JScrollPane面板中放置多个组件,需要将多个组件放置在JPanel面板上,然后将JPanel面板作为 一个整体组件添加在JScrollPane组件上。

下面列举一个JScrollPane面板的例子。

【例13.11】在项目中创建JScrollPaneTest类,该类继承JFrame类成 为窗体组件,在类中创建JScrollPane滚动面板组件,该滚动面板组件包 含JTextArea文本域组件。本实例关键代码如下:

package com.lzw;

import java.awt.*;

import javax.swing.*;

public class JScrollPaneTest extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public JScrollPaneTest() {
		Container c = getContentPane(); // 创建容器
		JTextArea ta = new JTextArea(20, 50); // 创建文本区域组件
		JScrollPane sp = new JScrollPane(ta); // 创建JScrollPane面板对象
		c.add(sp); // 将该面板添加到该容器中
		
		setTitle("带滚动条的文字编译器");
		setSize(200, 200);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new JScrollPaneTest();
		
	}
	
}
在应用程序中使用JScrollPane面板
在应用程序中使用JScrollPane面板

从本实例的运行结果中可以看出,在窗体中创建一个带滚动条的文 字编译器,首先需要初始化编译器(在Swing中编译器类为JTextArea 类),并在初始化时指定编译器的大小完成(如果读者对编译器的概念 有些困惑,可以参见后续章节)。当创建带滚动条的面板时,需将编译 器加入面板中,最后将带滚动条的编译器放置在容器中即可。

发表评论