`
flyPig
  • 浏览: 138731 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JInternalFrame用法

阅读更多
    JInternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JinternalFrame是
lightweight component ,也就是说JInternalFrame不能单独出现,必须依附在最上层组件上。由于这个特色,JInternalFrame能
够利用java提供的Look and Feel功能作出完全不同于原有操作系统所提供的窗口外型,也比JFrame更具有弹性。
   一般我们会将Internal Fram加入Desktop Pane方便管理,Desktop Pane是一种特殊的Layered pane,用来建立虚拟桌面(Vitual
Desktop).它可以显示并管理众多Internal Frame之间的层次关系。以下是JDesktopPane的类层次结构图;
     类层次结构图:
   java.lang.Object
    --java.awt.Component
    --java.awt.Container
       --javax.swing.JComponent
             --javax.swing.JLayeredPane
                  --javax.swing.JDesktop
  我们先来看看如何构造JInternalFrame与JDesktopPane,再来看它跟Desktop Pane之间的关系。下面分别是JInternalFram与
JDesktopPane的构造函数:
   JInternalFrame构造函数:
   JInternalFrame():建立一个不能更改大小、不可关闭、不可最大最小化、也没有标题的Internal Frame。
   JInternalFrame(String title):建立一个不能更改大小、不可关闭、不可最大最小化、但具有标题的Internal Frame。
   JInternalFrame(String title,boolean resizable):建立一个不可关闭、不可最大最小化、但可变更大小且具有标题的
                                                 Internal Frame。
   JInternalFrame(String title,boolean resizable,boolean closable):建立一个可关闭、可更改大小、且具有标题,但不可
                                                                   最大化最小化的Internal Frame.
   JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable):建立一个可关闭、可更改大小、
                         具有标题、可最大化,但不可最小化的Internal Frame.
   JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable,boolean iconifiable):
                建立一个可关闭、可更改大小、具有标题、可最大化与最小化的Internal Frame.

   JDesktopPane构造函数:
   JDesktopPane():建立JDesktopPane组件。

如何利用JDesktoPane来管理JInternalFrame:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class JInternalFrame1 extends JFrame implements ActionListener{
    
    JDesktopPane desktopPane;
    int count = 1;
    
    public JInternalFrame1() {
        super("JInternalFrame1");
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new BorderLayout());
        
        JButton b = new JButton("Create New Internal Frames");
        b.addActionListener(this);//当用户按下按钮时,将运行actionPerformed()中的程序
        contentPane.add(b, BorderLayout.SOUTH);
        /*建立一个新的JDesktopPane并加入于contentPane中
         */
        desktopPane = new JDesktopPane(); 
        contentPane.add(desktopPane); 

        setSize(350, 350); 
        show(); 
        
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                    System.exit(0);
            }
        });
    }
    /*产生一个可关闭、可改变大小、具有标题、可最大化与最小化的Internal Frame.
     */
    public void actionPerformed(ActionEvent e)
    {
        JInternalFrame internalFrame = new JInternalFrame(
        "Internal Frame "+(count++), true, true, true, true);  

        internalFrame.setLocation( 20,20);
        internalFrame.setSize(200,200); 
        internalFrame.setVisible(true);
        //取得JInternalFrame的Content Pane,用以加入新的组件。
        Container icontentPane = internalFrame.getContentPane();
        JTextArea textArea = new JTextArea();
        JButton b = new JButton("Internal Frame Button");
        icontentPane.add(textArea,"Center");
        icontentPane.add(b,"South");
        //将JInternalFrame加入JDesktopPane中
        desktopPane.add(internalFrame);  
        
        try {
            internalFrame.setSelected(true);
        } catch (java.beans.PropertyVetoException ex) {
          System.out.println("Exception while selecting");
        }
    }

    public static void main(String[] args) {
        new JInternalFrame1();
    }
}

分享到:
评论

相关推荐

    swing透明切换

    这个例子中,`TransparentButton`类继承自`JButton`,并设置了不透明和内容区域不填充,然后在`paintComponent()`方法中使用了`AlphaComposite`来实现透明效果。 通过以上知识点,我们可以创建出具有Swing透明切换...

    java swing5

    此外,`JDesktopPane`还定义了一些方便的方法来访问`JInternalFrame`子组件并附带实现一个`DesktopManager`接口(见API文档)。 #### 16.1.2 `JInternalFrame`类 `JDesktopPane`的主要作用是为`JInternalFrame`...

    JAVA SWING

    Swing 使用模型-视图-控制器(MVC)架构,使得程序的逻辑和界面展示分离。例如,JTable组件可以与TableModel对象关联,当数据模型改变时,表格会自动更新,反之亦然。 在Swing中,事件处理是非常关键的一环。通过...

    Java_Swing窗体种类简介

    `JInternalFrame`是一个特殊的Swing组件,它通常用作`JDesktopPane`中的子窗口,允许用户在单个窗口中打开多个子窗口。`JInternalFrame`的一些重要特性包括: - 可以通过构造函数设置标题以及是否可以改变大小、...

    java实现点击按钮事件弹出子窗口

    但是,对于使用JDK1.7之前版本的开发者,上述实现方式是必要的,因为那时JFrame不允许直接添加JInternalFrame。 这个示例代码中并没有详细展示子窗口Testinterfrm的代码实现,但其原理与父窗口类似,也是继承自...

    InternalFrameDemo.rar_java窗口

    1. **JInternalFrame的使用** `JInternalFrame`继承自`JFrame`,它可以在JDesktopPane上浮动并可被最小化、最大化、关闭。在`InternalFrameDemo`中,开发者会创建一个或多个`JInternalFrame`对象,然后添加到`...

    Java MDI简易文件编辑器

    这些可以通过JInternalFrame提供的方法实现,例如setMaximumSize()、setIcon()、setClosed(true)等。同时,为了提供更好的用户体验,还可以实现窗口拖放功能,让用户自由调整窗口位置。 5. **事件处理**: 要实现...

    java mdi example

    在Swing中,我们主要使用`JDesktopPane`作为主容器来容纳MDI子窗口,而`JInternalFrame`则用来创建和管理这些子窗口。下面我们将详细探讨如何在Java中创建一个简单的MDI示例。 1. **导入必要的库** 首先,我们需要...

    java多文档界面的设计

    3. **管理视图切换**:通过设置容器的`setVisibleIndex`方法来控制当前可见的视图。此外,还需要开发一套机制来管理视图的添加、删除以及保存状态等功能。 通过上述步骤,可以有效地使用卡片布局管理器来构建一个...

    Swing 窗口与面版的使用

    介绍Frame和Panel容器的使用方法和时机。针对JFrame,JInternalFrame,JLayeredPane,JPanel,JScrollBar,JSplitPane,JTabbedPane写有详细的可执行代码。

    计算机外文翻译-菜单和工具栏大学论文.doc

    在使用JMenuBar类时,需要注意菜单栏的位置,可以使用setJMenuBar()方法将菜单栏添加到JFrame、JDialog、JApplet或JInternalFrame中。该方法类似于java.awt.Frame的setMenuBar()方法,用于将菜单栏添加到容器中。 ...

    图书管理系统数据库源代码.doc

    4. **JInternalFrame**:在 `addIFrame` 方法中,可以看到系统支持添加 `JInternalFrame` 子窗体到 `JDesktopPane` 中,这使得用户可以在主窗口中打开多个相关的功能窗口。 5. **布局管理**:`Main` 类中使用了 `...

    java_dialog_example.rar_java Dial_java dialog

    8. **DialogDemo.class**: 另一个对话框的演示程序,可能包含了`java.awt.Dialog`类的用法,展示了如何创建和使用基本对话框。 9. **OptionDialog.class**: 可能是一个自定义的选项对话框,允许用户从多个选项中...

    Swing组件一览表

    `JInternalFrame()`和`JInternalFrame(String title)`是创建方法。 - `JLayeredPane`:允许组件在不同的层次上重叠。`JLayeredPane()`是其构造方法。 - `JRootPane`:每个JFrame和JDialog都包含一个JRootPane,它...

    Java_ Swing, 2nd Edition

    "Java Swing, 2nd Edition"这本书可能涵盖了Swing组件的详细使用方法,包括组件的属性、方法和构造函数。它可能还会讲解如何自定义组件,使用装饰器模式增强组件的功能。除此之外,书中可能会深入讨论Swing的布局...

    《JavaSwing第二版》

    7. **Swing小组件(JInternalFrame和JSplitPane)**:Swing还提供了可以在其他组件内部使用的组件,如JInternalFrame(用于创建框架内的框架)和JSplitPane(用于分割组件区域)。 8. **国际化和 Accessibility**:...

    java文本编辑器

    这里使用了 `cardPane` 来管理不同的视图状态,并且通过调用 `setCurrViewPane` 方法来改变当前视图的状态。此外,还需要更新所有打开的文档窗口的位置和大小。 ```java public void switchViewState() { if ...

    图形用户界面设计组件分类

    在IT领域,图形用户界面(GUI)设计是用户体验的...理解和掌握这些组件的特性和用法,对于开发高效、用户友好的应用程序至关重要。通过合理地组合和配置这些组件,开发者可以创建出满足各种功能和视觉要求的GUI界面。

    Java Swing 图形界面开发--文章的源码

    在这个“Java Swing 图形界面开发--文章的源码”压缩包中,包含了与CSDN博客文章《xietansheng》相关的所有示例代码,这些代码都是使用Eclipse IDE编写的。 1. **Java Swing组件**: - Swing 提供了多种组件,如 ...

Global site tag (gtag.js) - Google Analytics