Swing中使用顶层容器

Swing提供3种顶层容器类:JFrame,JDialog,JApplet。当使用这三个类时,你必须注意以下几点:

1.为了显示在屏幕上,每个GUI组件必须是包含层次(containment hierarchy)的一部分。包含层次是组件的一个树型结构,最顶层的容器是它的根。

2.每个GUI组件只能被包含一次。如果一个组件已经在一个容器中,这时试图将它加入到一个新的容器,则这个组件会从第一个容器移除,并加入到第二个容器中。

3.每个顶层容器都有一个内容面板(content pane),一般情况下,这个内容面板会包含(直接或间接地)所有顶层容器GUI的可视组件。

4.可以在顶层容器中加入一个菜单条(menu bar)。通常这个菜单条被放置在顶层容器中,但在内容面板外。

下面这张图片是通过应用程序创建的一个frame。这个frame包含一个绿色的菜单(空菜单),在这个frame的内容面板上有一个巨大的黄色空标签。

这个例子的源代码见TopLevelDemo.java。下图是这个例子GUI的包含层次。

1.顶层容器与包含层次

每个使用Swing组件的程序都至少有一个顶层容器。这个顶层容器是包含层次的根节点—这个层次会包含所有将在这个顶层容器中出现的Swing组件。

通常情况下,一个单独的基于Swing GUI的应用程序至少有一个包含层次,且它的根节点是JFrame。举例来说,如果一个应用程序拥有一个窗口和两个对话框,那么这个应用程序将会有三个包含层次,也即会有三个顶层容器。一个包含层次将JFrame作为它的根节点,两外两个包含层次各有一个JDialog作为它的根节点。

一个基于Swing组件的小程序(applet)至少含有一个包含层次,并且可以确定其中必有一个是以JApplet作为其根节点的。例如,一个小程序带有一个对话框,则它会有两个包含层次。在浏览器窗口中的组件将会置于一个包含层次,它的根节点是一个JApplet对象。对话框会有一个包含层次,它的根节点是一个JDialog对象。

时间: 2024-10-28 15:52:42

Swing中使用顶层容器的相关文章

关于java的swing类中的顶层容器

问题描述 关于java的swing类中的顶层容器 在java中 顶层容器类可不可以包含在其他容器中 比如说JDialog类是顶层容器类这个可不可以放在其他容器中?那JApplet类呢? 解决方案 Swing提供3种顶层容器类:JFrame,JDialog,JApplet.所以,JApplet也是不可以放在其他容器中的.

Java的Swing编程中使用SwingWorker线程模式及顶层容器_java

使用SwingWorker线程模式 谨慎地使用并发机制对Swing开发人员来说非常重要.一个好的Swing程序使用并发机制来创建不会失去响应的用户接口-不管是什么样的用户交互,程序总能够对其给出响应.创建一个有响应的程序,开发人员必须学会如何在Swing框架中使用多线程. 一个Swing开发人员将会与下面几类线程打交道: (1)Initial threads(初始线程),此类线程将执行初始化应用代码. (2)The event dispatch thread(事件派发线程),所有的事件处理代码在

Java Swing中两种设置背景图(容器图片)

在java swing中需要为容器添加图片,或者背景图片. 提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel 1.JPanel(源代码) [java] view plaincopy package oo;      import java.awt.Graphics;   import java.awt.Image;   import java.io.File;      import javax.swing.ImageIcon;   import javax.swing.JF

按钮-自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙!

问题描述 自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙! /*题目是这样的:创建一个窗体在其中摆放两个内容面板对两个面板进行边框个性化设置.初始状态为第二个面板不可见,当单击第一个面板中的"打开"按钮时,第二个面板即可见:当单击第一个面板中的"关闭"按钮时,第二个面板消失. 以下是我结合书本写的代码,不知道为什么运行不了???*/import javax.swing.*;import java.awt.*;impor

Java Swing中的JButton、JComboBox、JList和JColorChooser组件使用案例_java

Swing 的组件与AWT 组件相似,但又为每一个组件增添了新的方法,并提供了更多的高级组件. Swing 的基本组件: 1.按钮(JButton): Swing 中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且还可以将多个图像指定给一个按钮. (1).JButton 常用的构造方法. JButton(String text):按钮上显示字符. JButton(Icon icon) :按钮上显示图标. JButton(String text, Icon icon):按钮上既显示图标

在Swing中设置模态窗体和启动位置

关于 Modal 窗体 在 Swing 中只有 JDialog 可以设置为 Modal 窗体,其方法可以在构造函数(例如"JDialog(Frame owner, boolean modal)")中传参数,也可以用 setModal(boolean b) 方法设定,这个方法是从 Dialog 类继承的. 在 JFrame 类中,无法通过如 JDialog 的方法设置 Modal 窗体,在 CSDN 有朋友尝试通过在 windowDeiconified() 时 requestFocus(

Swing中Timer定时器的使用

构造方法:Timer(int delay,ActionListener listener) 创建一个每 delay 毫秒将通知其侦听器的 Timer. Api的一段示例代码 int delay = 1000; //milliseconds ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { //...Perform a task... } }; n

Swing中为文本组件定制统一的菜单

在很多软件中每个文本组件都有自定义的菜单,这个blogjava的编辑器就有这样的菜单如:Cut , Copy,Paste,Delete,Select All,在Swing中若也想在JTextField,JTextArea,JEditorPane,JTextPane等等这些组件中都提供如此自定义菜单的功能,每个都写继承类?或者加鼠标监听事件?但不管怎样弄都会实现效果,只不过这样动静很大,不好维护,今天在网上看到一个很是方便的方法. 大家都知道,Swing中所有的事件都是进入java.awt.Eve

可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

以下是对可视化Swing中JTable控件绑定SQL数据源的两种方法进行了详细的分析介绍,需要的朋友可以过来参考一下   在 MyEclipse 的可视化 Swing 中,有 JTable 控件. JTable 用来显示和编辑常规二维单元表. 那么,如何将 数据库SQL中的数据绑定至JTable中呢? 在这里,提供两种方法.JTable的构造方法通过查阅Java的API,可以可以得到JTable的两个重要的构造方法:JTable(Object[][] rowData, Object[] colu