codecamp

SWING 容器

SWING 容器

容器是 SWING GUI 组件的组成部分。一个容器提供了一个可以放置组件的空间。在 AWT 中,一个容器是组件本身,并且它增加了功能来添加组件本身。下面是需要考虑的注意事项。

  • 容器的子类被称为容器。例如 JPanel,JFrame 和 JWindow。

  • 容器可以仅仅添加组件到自身。

  • 一个默认的布局使用 setLayout 方法来呈现在每个可以被重写的容器中。

从功能上可分为:

顶层容器:JFrame、JApplet、JDialog、JWindow共4个

中间容器:JPanel、JScrollPane、JSplitPane、JToolBar

使用 JFrame 类创建 GUI 界面时,其组件的布局组织示意如图 1 所示。

JFrame窗口组件组织
图1 JFrame窗口组件组织
在图 1 中显示有“大家好”的 Swing 组件需要放到内容窗格的上面,内容窗格再放到 JFrame 顶层容器的上面。菜单栏可以直接放到顶层容器 JFrame 上,而不通过内容窗格。内容窗格是一个透明的没有边框的中间容器。

SWING 容器:

下面是当使用 SWING 设计 GUI 事件时常用的容器列表。

序号 容器 & 描述
1 Panel
JPanel 是一个最简单的容器。它提供了任何其他组件可以被放置的空间,包括其他面板。
2 Frame
JFrame 是一个带有标题和边界的顶层窗口。
3 Window
JWindow 对象是一个没有边界和菜单条的顶层窗口。

在了解窗口组件 JFrame 的语法之后,下面使用 JFrame 类创建一个窗口。要求设置窗口的标题为“Java 第一个 GUI 程序”,并向窗口内添加“这是使用 JFrame 类创建的窗口”文本。具体实现代码如下:

  1. package ch17;
  2. import javax.swing.JFrame;
  3. import javax.swing.JLabel;
  4. import java.awt.*;
  5. public class JFrameDemo extends JFrame
  6. {
  7. public JFrameDemo()
  8. {
  9. setTitle("Java 第一个 GUI 程序"); //设置显示窗口标题
  10. setSize(400,200); //设置窗口显示尺寸
  11. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //置窗口是否可以关闭
  12. JLabel jl=new JLabel("这是使用JFrame类创建的窗口"); //创建一个标签
  13. Container c=getContentPane(); //获取当前窗口的内容窗格
  14. c.add(jl); //将标签组件添加到内容窗格上
  15. setVisible(true); //设置窗口是否可见
  16. }
  17. public static void main(String[] agrs)
  18. {
  19. new JFrameDemo(); //创建一个实例化对象
  20. }
  21. }


上述代码创建的 JFrameDemo 类继承了 JFrame 类,因此 JFrameDemo 类可以直接使用 JFrame 类的方法。setTitle() 方法用来设置窗口标题,setDefaultCloseOperation() 方法用来设置响应方式,即当单击“关闭”按钮时退出该程序。

在构造方法中使用 JLabel 类创建一个标签对象 jl,其参数是标签的文本提示信息。JFrame 框架的 getContentPane() 方法获取了内容窗格对象,并使用 add() 方法将标签添加到内容窗格上。最后的 setVisible() 方法是从父类中继承的方法。

程序运行的窗口结果如图 2 所示。

窗口运行结果
图2 窗口运行结果


SWING 菜单类
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }