14.3-全栈Java笔记:JPanel原来是这样用的

在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();

}

}

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

图 示例1运行效果图

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

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

A-Java入门阶段

B-数据库从入门到精通

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

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop

时间: 2024-09-30 07:16:33

14.3-全栈Java笔记:JPanel原来是这样用的的相关文章

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的

14.4-全栈Java笔记: javax.swing常用控件有哪些?怎么用?

常用基本控件 javax.swing.JButton 在图形界面程序中,按钮可能是使用量最大的控件之一,javax.swing包中JButton类就是用来创建按钮的.如表1所示,为JButton常用的构造方法.  javax.swing.JLabel JLabel控件是最简单的Swing组件之一,用于在窗体上显示标签, JLabel既可以显示文本,也可以显示图像.如表3所示,为JLabel常用的构造方法. 注意: JLabel只能用于显示文本和图标信息,用户不能对其进行修改. javax.swi

14.2-全栈Java笔记: Java Swing创建窗口,原来这么简单!!!

上节我们聊到GUI(Graphical User Interface)的概念,并学习GUI编程中主要需掌握两个包,分别是:AWT和Swing,本节我们会通过Swing程序中常用的类和控件来实现第一个窗口.  javax.swing.JFrame JFrame在GUI中为一个窗口对象,继承于Frame.JFrame控件用于在Swing程序中创建窗体.如表1所示,为JFrame常见的构造方法. 注意: Java语言规定在GUI编程中任何窗口实例化出来时默认为不可见(即隐藏)状态,所以当我们使用构造方

14.1-全栈Java笔记: Java语言中GUI到底是神马鬼?| AWT | Swing

到目前为止,我们在Java中编写的基本都是基于控制台的程序:而Java编程语言之所以如此流行的一个主要原因之一,就是因为它支持图形用户界面功能,即GUI(Graphical User Interface). GUI(Graphical User Interface)即图形用户界面,就是应用程序提供给我们用户操作的图形界面,包括窗口.菜单.工具栏及其它多种图形界面元素,如文本框.按钮.列表框.对话框等.它能使应用程序显得更加友好. 学习Java的GUI编程主要是要掌握两个包,分别是:java.aw

10.2-全栈Java笔记:最全面的IO技术(二)

上节我们聊到「IO技术概念及入门」这节我们继续聊一下IO技术的分类. Java中流的概念细分 按流的方向分类: 输入流:数据流向是数据源到程序(InputStream.Reader结尾的流) 输出流:数据流向是程序到目的地(OutPutStream.Writer结尾的流) 按处理的数据单元: 字节流:按照字节读取数据(InputStream.OutputStream)命名上以stream结尾的流一般是字节流. 字符流:按照字符读取数据(Reader.Writer).命名上以Reader/Writ

10.1-全栈Java笔记:最全面的IO技术(一)

IO技术 对于任何程序设计语言而言,输入输出(Input/Output)系统都是非常核心的功能.程序运行需要数据,数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备等等. 外部系统比较复杂多变,那么我们有必要通过某种手段进行抽象.屏蔽外部的差异,从而实现更加便捷的编程. 输入(Input)指的是:可以让程序从外部系统获得数据(核心含义是"读",读取外部数据).常见的应用: 1) 读取硬盘上的文件内容到程序.例如:播放器打开一个视频文件.word打

15.2-全栈Java笔记:ActionEvent事件类型可以实现哪些功能?

ActionEvent事件 ActionEvent可能是使用得最多的事件类型,其对应的监听器是ActionListener接口,该监听器接口的实现类必须重写actionPerformed方法,当事件发生时就会调用该方法. 这个方法的原型是:public void actionPerformed(ActionEvent  e); 这个actionPerformed方法就是当事件发生时,由系统自动调用的方法,因此我们希望事件发生时需要做的业务逻辑可以写在这个方法中,但是这个方法我们只需要重写即可,不

11.11-全栈Java笔记:线程状态转换和任务定时调度

线程状态转换 1)New :创建好线程对象,但没有启动的时候. 一个线程调用start()之后不一定会马上启动,此时进入就绪状态,等待得到资源. 2)就绪线程序通过Scheduler(调度程序)去确定是否运行. 3)Runing---dead:运行结束(非双向,为单向箭头). 4)Runing---就绪:暂停(除了没有CPU,具备运行的所有条件). 5)Runing-otherwise(阻塞):因程序原因:调用sleep或join之后,线程被阻塞.这时不具备运行的条件,此时线程进入阻塞池.sle

9.6-全栈Java笔记:二叉树和红黑二叉树

二叉树的定义 二叉树是树形结构的一个重要类型. 许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要. 二叉树(BinaryTree)由一个结点及两棵互不相交的.分别称作这个根的左子树和右子树的二叉树组成.下图中展现了五种不同基本形态的二叉树. (a) 为空树 (b) 为仅有一个结点的二叉树 (c) 是仅有左子树而右子树为空的二叉树 (d) 是仅有右子树而左子树为空的二叉树 (e) 是左.右子树均非