面板也是一种Swing容器,它可以作为容器容纳其他组件,但他必须被添加到其他容器中。Swing组件中常用的面板包括JPane面板以及JScrollPane面板。

JPanel

JPanel面板可以聚集一些组件来布局。我们应该明确面板也是一种容器,因为它也继承在java.awt.Container类。

下面例子中,我们使用了4个面板,然后在每个面板中设置布局管理器,最后分别在4个面板中放置一些组件。

package com.xsh;
import java.awt.*;
import javax.swing.*;
public class JPaneTest extends JFrame {

	public JPaneTest() {
		setTitle("JPanel面板");
		Container container = getContentPane();
		//创建四个面板
		container.setLayout(new GridLayout(2,1,10,10));
		JPanel jp1 = new JPanel(new GridLayout(1,3,10,10));
		JPanel jp2 = new JPanel(new GridLayout(1,2,10,10));
		JPanel jp3 = new JPanel(new GridLayout(1,2,10,10));
		JPanel jp4 = new JPanel(new GridLayout(2,1,10,10));
		JPanel[] jps = {jp1,jp2,jp3,jp4};
		//下面的四个循环是在面板中添加按钮组件
		for(int i =0; i<3; i++) {
			jp1.add(new JButton("button" + i));
		}
		for(int i =0; i<2; i++) {
			jp2.add(new JButton("button" + i));
		}
		for(int i =0; i<2; i++) {
			jp3.add(new JButton("button" + i));
		}
		for(int i =0; i<2; i++) {
			jp4.add(new JButton("button" + i));
		}
		//将面板添加到容器中
		for (int i =0; i< jps.length; i++) {
			container.add(jps[i]);
		}
		setSize(600,150);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new JPaneTest();
	}

}

其运行结果如下:

JScrollPanel面板

在设置界面中,可能会遇到在一个较小的容器中显示一个较大部分内容的情况,这时候我们可以使用JScrollPanel面板。

JScrollPanel面板是一种带滚动条的面板,它也是一种容器,但是JScrollPanel只能放置一个组件,并且不可以使用布局管理器。如果需要在JScrollPanel面板中放置多个组件,需要将多个组件放置在JPanel面板上,然后将JPanel面板作为一个整体组件添加在JScrollPanel组件上。

下面的例子中我们将展示JScrollPanel的使用:

package com.xsh;

import java.awt.*;

import javax.swing.*;

public class JscrollPaneTest extends JFrame {

	public JscrollPaneTest() {
		setTitle("使用JScrollPanel组件");	 	//设置窗体标题
		Container c = getContentPane();		//定义容器
		JTextArea ta = new JTextArea(20,50);	//创建文本区域组件
		ta.setText("这是一个文本区域");	//设置文本区域文字
		JScrollPane sp =new JScrollPane(ta);	//将文本组件添加到JScrollPane组件中
		c.add(sp);	//将JScrollPane组件添加到容器中
		setSize(200,200);	//设置容器大小
		setVisible(true);	//设置容器可见性
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new JscrollPaneTest();
	}

}

运行结果如下:

本实例可以看出,在窗体中创建一个带滚动条的文字编辑器,首先需要初始化编译器,并在初始化时指定编译器的大小。

当创建带滚动条的面板时,需要将编译器加入面板中,最后将带滚动条的编译器添加到容器中。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐