swing中几乎所有组件都是从JComponent衍生而来,也就是说这些组件lightweight component,均由纯java code所编写而成.swing中以下几个组件不是由JComponent继承而来:
JFrame(JRoot Pane)//常用来建立主窗口
JDialog(JRoot Pane)//对话框窗口
JWindow(JRoot Pane)//经常用做logo窗口,无标题栏,无边框
JApplet(JRoot Pane)//用来构造applet小应用程序
以上四个组件是heavyweight Component,必须使用到native code来画出这四个窗口组件.因为要在操作系统中显示窗口画面,必须使用操作系统的窗口资源,而以往的AWT组件大多使用native code所构造出来,因此Swing中的JFrame便继承原有AWT中的Frame类,而不是继承JComponent类.同样,JApplet是继承原有AWT中的JApplet类,也不是继承JComponent类.
JFrame,JDialog,JWindow及JApplet这四个组件统称为最上层组件,因为其余的swing组件都必须依附在此四组件之一上才能显示出来,也就是说swing中要建立窗口必须使用其中的一个最上层组件.此四组件均含有RootPane组件,且均实现了RootPaneContainer这个接口.附图:
关于RootPaneContainer接口.RootPaneContainer接口定义了各种容器取得与设置的方法,这里的各种容器指的是JRootPane(虚拟的容器),GlassPane,Content.共有五个类实现了RootPaneContainer接口,除了上面所提到得四个最上层得重量级组件之外,还有轻量级的JInternalFrame,它不能单独显示.RootPaneContainer定义了以下几种方法:
Container getContentPane();
Component getGlassPane();
JLayeredPane getLayeredPane();
JRootPane getRootPane();
void setContentPane(Container contentpane);
void setGlassPane(Component glasspane);
void setLayeredPane(JLayeredPane layeredpane);
关于JRootPane类.JRootPane由GlassPane,ContentPane以及MenuBar(可选)组成,其中ContentPane和MenuBar又都由LayeredPane管理.GlassPane位于最上面,用来捕捉鼠标行为.LayeredPane就像家中放鞋子的鞋架,有很多层,而ContentPane则只是其中的一层,一般我们只要对这一层进行操作就行了.
附图:
我们要在最上层组件上加入任何组件只能在GlassPane和ContentPane上面增加,也就是在Layered Pane上面或者在Layered Pane的ContentPane上面增加.
以JFrame为例,一般我们要在JFrame上加入其他组件(如JButton,JLabel等)必须先取得JFrame的Content Pane,然后将要加入的组件放在此Content Pane中,而不是直接就加到JFrame上.因此若要在JFrame中加入一个按钮,不能像以前AWT时一样写成frame.add(button)的形式,而必须先取得JFrame的Content Pane,然后将按钮加入Content Pane中,如:
frame.getContentPane().add(button)
JFrame(JRoot Pane)//常用来建立主窗口
JDialog(JRoot Pane)//对话框窗口
JWindow(JRoot Pane)//经常用做logo窗口,无标题栏,无边框
JApplet(JRoot Pane)//用来构造applet小应用程序
以上四个组件是heavyweight Component,必须使用到native code来画出这四个窗口组件.因为要在操作系统中显示窗口画面,必须使用操作系统的窗口资源,而以往的AWT组件大多使用native code所构造出来,因此Swing中的JFrame便继承原有AWT中的Frame类,而不是继承JComponent类.同样,JApplet是继承原有AWT中的JApplet类,也不是继承JComponent类.
JFrame,JDialog,JWindow及JApplet这四个组件统称为最上层组件,因为其余的swing组件都必须依附在此四组件之一上才能显示出来,也就是说swing中要建立窗口必须使用其中的一个最上层组件.此四组件均含有RootPane组件,且均实现了RootPaneContainer这个接口.附图:
关于RootPaneContainer接口.RootPaneContainer接口定义了各种容器取得与设置的方法,这里的各种容器指的是JRootPane(虚拟的容器),GlassPane,Content.共有五个类实现了RootPaneContainer接口,除了上面所提到得四个最上层得重量级组件之外,还有轻量级的JInternalFrame,它不能单独显示.RootPaneContainer定义了以下几种方法:
Container getContentPane();
Component getGlassPane();
JLayeredPane getLayeredPane();
JRootPane getRootPane();
void setContentPane(Container contentpane);
void setGlassPane(Component glasspane);
void setLayeredPane(JLayeredPane layeredpane);
关于JRootPane类.JRootPane由GlassPane,ContentPane以及MenuBar(可选)组成,其中ContentPane和MenuBar又都由LayeredPane管理.GlassPane位于最上面,用来捕捉鼠标行为.LayeredPane就像家中放鞋子的鞋架,有很多层,而ContentPane则只是其中的一层,一般我们只要对这一层进行操作就行了.
附图:
我们要在最上层组件上加入任何组件只能在GlassPane和ContentPane上面增加,也就是在Layered Pane上面或者在Layered Pane的ContentPane上面增加.
以JFrame为例,一般我们要在JFrame上加入其他组件(如JButton,JLabel等)必须先取得JFrame的Content Pane,然后将要加入的组件放在此Content Pane中,而不是直接就加到JFrame上.因此若要在JFrame中加入一个按钮,不能像以前AWT时一样写成frame.add(button)的形式,而必须先取得JFrame的Content Pane,然后将按钮加入Content Pane中,如:
frame.getContentPane().add(button)
发表评论
-
java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path
2011-08-19 17:01 2509Exception in thread "main& ... -
打jar包
2011-05-26 18:35 1034打成jar包: 1、没有其他类库jar文件和插件 ... -
Java实现通用线程池
2011-05-05 23:11 1054线程池通俗的描述就是预先创建若干空闲线程,等到需要用多线程去处 ... -
Java tutorial
2011-05-05 21:49 1022http://download.oracle.com/java ... -
java.awt.component.repaint()
2011-05-05 18:57 1044repaint public void repaint()R ... -
validate
2011-05-05 17:21 749validate public void validate( ... -
Class.forName和New的比较
2011-04-26 14:46 711在初始化一个类,生成一个实例的时候,newInstance() ... -
Responding to Window-Closing Events
2011-04-26 03:00 778By default, when the user close ... -
Map、Collection、List接口的总结
2011-04-26 02:52 846Map接口: | + -- ... -
复杂的GridBagLayout
2011-02-07 16:06 1042今天终于耐着性子弄懂了GridBagLayout是怎么使用的。 ... -
swing中的布局管理器
2011-02-07 15:42 14504.CardLayout CardL ... -
Java swing 组件分层介绍:JRootPane,GlassPane,LayeredPane
2011-02-06 17:01 3055什么是Swing,什么又是ligh ... -
JTextArea操作
2011-01-11 18:03 1250JTextArea操作: (1)在JTextArea插入 ... -
double到int转换
2010-12-16 23:28 853double到int转换,有“截断”误差的。 可以通过+0.5 ... -
各种排序算法java实现
2010-11-25 15:20 599package org.rut.util.algorith ... -
Java中使用BigDecimal进行浮点数高精度计算
2010-11-25 15:18 813转自:http://chongtianpig.netbei.c ... -
利用java内存映射文件机制实现CRC循环冗余校验
2010-11-19 13:52 1107import java.nio.MappedByteBuf ... -
java中进行二进制,八进制,十六进制,十进制间进行相互转换
2010-11-19 13:48 653十进制转成十六进制: Integer.toHexString ... -
JScrollPane 例解
2010-11-19 01:49 1537类层次结构图: java.lang.Object -- ... -
JTextField JTextArea 区分
2010-11-19 01:14 1522一、单行文本输入框(JTextField) 在许多情况下 ...
相关推荐
Swing中的最上层组件(`JFrame`, `JDialog`, `JWindow`, `JApplet`)实现`RootPaneContainer`接口,该接口定义了访问和设置`JRootPane`的方法。`JRootPane`本身不是一个真正的容器,而是由`GlassPane`和`LayeredPane`...
MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到...组件,也就是所谓的最上层组件。
从最底层的Java运行环境和Swing核心库,到中间层的面板、布局管理器、验证器、应用框架和辅助库,再到上层的外观定制、组件管理和实用工具,直至最终形成完整的应用程序。这种层次化的结构使得开发者能够根据需求...
这个比喻源自于建筑学,大厦的基石代表了基础组件,而大厦的上层则表示更高级、功能更复杂的组件。Swing提供了一套丰富的组件,包括按钮、文本框、滚动面板、菜单等,这些组件构成了我们所见的各种GUI应用。 Swing...
【标题】"基于MyBatis的员工档案管理系统(Swing)"揭示了这个项目的核心技术栈,即MyBatis和Swing,它们是Java开发中的两个关键组件。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...
Swing是构筑在AWT上层的一组GUI组件的集合,对于底层平台的依赖更少。Swing中保留了AWT的事件处理、颜色、字体等处理。 3. Swing编程 Swing组件都是AWT的Container类的直接子类和间接子类。JComponent类是大部分...
在AWT和Swing中,组件的Z-order通常是:组件总是在容器之上,且先添加的组件在上层。 GUI主要由容器、控制组件和用户自定义成分组成。容器(Container)是界面的基础,它可以容纳其他组件,并能根据特定规则(如...
通过使用Java Swing组件,开发者还可以创建包含3D视图的交互式用户界面。 虽然本文件的部分内容提到了ActionScript 3的Vector类,这是一个与Java3D无关的特性,主要用于在Flash Player 10中创建类型安全且性能优化...
4. **事件处理**:在多层窗口框架中,可能需要处理组件间的事件交互,如点击底层按钮时,上层窗口的行为变化。这需要通过添加事件监听器来实现,如`MouseListener`、`ActionListener`等。 5. **动画效果**:`...
9. **Focus Management**:为了保证悬浮框始终在最上层,可能需要处理窗口的焦点管理。可以使用`toFront()`方法让窗口置于其他窗口之前。 10. **动画效果**:为了增加用户体验,可以添加一些动画效果,如淡入淡出、...
- `JLabel`, `JTextField`, `JPanel`: Swing组件,分别用于显示文本、接收用户输入和组织组件。 - `ActionListener`: 这是Java中的接口,通常与按钮等交互元素关联,用于处理用户的点击事件。虽然题目中没有详细...
3. **窗口层次**:为了使漂浮窗口始终位于最上层,需要调用`setAlwaysOnTop(true)`方法,这样窗口就会保持在其他窗口之前。 4. **动态更新**:为了实现类似迅雷那样的实时更新功能,需要在后台线程中处理数据更新,...
Panel是Swing中的容器,用于组织和显示其他GUI组件。 #### 布局 (Layout) 布局管理器负责自动调整GUI组件的位置和大小。 #### 滚动 (Scroll) 滚动通常指的是通过拖动滚动条来查看超出视图范围的内容。 #### 垂直 ...
这不同于Swing,Swing是完全基于Java虚拟机运行的,它的组件是通过Java的AWT(Abstract Window Toolkit)进行本地化渲染,这通常会导致界面在不同平台间有所差异。 ### SWT和JFace的类库结构和特点 - **SWT的结构...
其次,Swing是Java提供的用于创建桌面应用的GUI库,它提供了丰富的组件和事件处理机制。在云记账管理系统中,Swing被用来构建用户界面,包括输入框、按钮、表格等元素,使得用户可以直观地进行记账操作。Swing的模型...
在图书管理系统中,Swing被用来构建各种组件,如按钮、文本框、列表视图等,以实现用户友好的交互界面。开发者可以利用JFrame作为主窗口,JButton实现功能按钮,JLabel展示信息,JTable显示图书数据,JTextArea用于...
在SocketDebug中,MINA负责处理底层的TCP连接,实现高效的网络通信,同时提供了易于使用的接口供上层应用进行数据交换。 2. **Swing图形用户界面**: Swing是Java的一个图形用户界面(GUI)工具包,用于构建桌面...
计算机等级考试二级Java练习题及解析涵盖了多个Java编程的基础知识点,包括算法时间复杂度、数据结构、程序设计原则、软件工程、数据库设计、Java语言特性、异常处理、流的概念、Swing组件、对象序列化、软件调试...
SETALWAYSONTOP(HFIG,TRUE) 将使带有句柄 HFIG 的 Matlab 图形位于操作系统中的其他窗口... Swing 组件必须在当前的 Matlab 会话中可用。 例子: hFig = 图; setAlwaysOnTop(hFig,true); % 数字现在位于其他窗口的顶部
Java SWT(Standard Widget Toolkit)是Java编程环境中用于创建桌面应用程序的一种库,它是Java AWT(Abstract Window Toolkit)和Swing的替代品。SWT提供了与操作系统底层交互的能力,因此可以创建更加原生、高效的...