在GUI编程中,如果我们要向窗口中直接添加控件(如按钮控件、标签控件、文本框控件等)是不建议的,所以就出现了容器(JPanel),以后我们只需要在容器里加控件,然后将容器加到窗口上即可。想象一下,窗口如同黑板的外框,我们不会在外框上写字,我们要在被外框包含的黑板的面板上写字,那么黑板的面板就是我们的容器,写在黑板上的字就是控件。


JPanel作为中间容器,用于将较小的轻量级控件组合在一起,默认情况下,它是透明的,与窗体的内容面板类似。如表1所示,为JPanel常见的构造方法。

1 JPanel常用构造方法一览表

构造方法

说明

JPanel()

创建默认布局(FlowLayout)的面板

JPanel(LayoutManager   layout)

以指定的布局管理器创建面板

 JPanel的无参构造方法是在创建一个容器的时候,该容器的默认布局管理器是流式布局(布局管理器后面会讲解)。所以如果我们要按坐标定位的方式设置该容器中各个控件的位置,要使用参数类型为LayoutManager的有参构造方法,若该方法传入null,就可以使用坐标定位法定位每个控件在容器中的位置。

JPanel的常用方法如表2所示。

表2 JPanel常用方法一览表

方法

说明

void   setLayout(LayoutManager layout)

以指定布局管理器设置面板的布局

Component   add(Component comp)

往面板内添加控件

void   setBackground(Color bg)

设置面板的背景色

了解了JPanel类常用的构造方法和成员方法后,接下来我们在之前创建的窗口上添加容器,并使用坐标定位法设置容器中各个控件的位置,如示例1所示。

【示例1】在窗口上添加JPanel容器

package cn.sxt.views.testjpanel;

 

import java.awt.Color;

import javax.swing.JFrame;

import javax.swing.JPanel;

 

class JPanelDemo extends JFrame {

           private JPanel pnlMain;

           public JPanelDemo() {

                     //实例化容器时使用空布局(坐标定位法)

                     pnlMain = new JPanel(null);

                     init();

           }

           //该方法对窗口做初始化

           private void init() {

                     //关闭窗口时,程序结束

                     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                     //设置窗口标题栏上信息

                     this.setTitle("第一个窗口");

                     //设置窗口大小为宽:500,高:400

                     this.setSize(500, 400);

                     //设置窗口不能被调整大小

                     this.setResizable(false);

                     //此行代码是给容器设置背景颜色

                     pnlMain.setBackground(Color.black);

                     //将容器添加在窗口上

                     this.add(pnlMain);

                     //设置窗口可见

                     this.setVisible(true);

           }

}

 

public class Test {

           public static void main(String[ ] args) {

                     //调用JPanelDemo的构造方法创建并显示窗体

                     new JPanelDemo();

           }

}

注意:之所以设置容器背景颜色是为了让大家看到该容器,因为容器默认是透明的,不设置背景颜色是看不见的。执行结果如图所示

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

图 示例1运行效果图



「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。


 笔记包含从浅入深的六大部分:

 A-Java入门阶段

 B-数据库从入门到精通

 C-手刃移动前端和Web前端

 D-J2EE从了解到实战

 E-Java高级框架精解

 F-Linux和Hadoop