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();
}
}
分享到:
相关推荐
这个例子中,`TransparentButton`类继承自`JButton`,并设置了不透明和内容区域不填充,然后在`paintComponent()`方法中使用了`AlphaComposite`来实现透明效果。 通过以上知识点,我们可以创建出具有Swing透明切换...
此外,`JDesktopPane`还定义了一些方便的方法来访问`JInternalFrame`子组件并附带实现一个`DesktopManager`接口(见API文档)。 #### 16.1.2 `JInternalFrame`类 `JDesktopPane`的主要作用是为`JInternalFrame`...
Swing 使用模型-视图-控制器(MVC)架构,使得程序的逻辑和界面展示分离。例如,JTable组件可以与TableModel对象关联,当数据模型改变时,表格会自动更新,反之亦然。 在Swing中,事件处理是非常关键的一环。通过...
`JInternalFrame`是一个特殊的Swing组件,它通常用作`JDesktopPane`中的子窗口,允许用户在单个窗口中打开多个子窗口。`JInternalFrame`的一些重要特性包括: - 可以通过构造函数设置标题以及是否可以改变大小、...
但是,对于使用JDK1.7之前版本的开发者,上述实现方式是必要的,因为那时JFrame不允许直接添加JInternalFrame。 这个示例代码中并没有详细展示子窗口Testinterfrm的代码实现,但其原理与父窗口类似,也是继承自...
1. **JInternalFrame的使用** `JInternalFrame`继承自`JFrame`,它可以在JDesktopPane上浮动并可被最小化、最大化、关闭。在`InternalFrameDemo`中,开发者会创建一个或多个`JInternalFrame`对象,然后添加到`...
这些可以通过JInternalFrame提供的方法实现,例如setMaximumSize()、setIcon()、setClosed(true)等。同时,为了提供更好的用户体验,还可以实现窗口拖放功能,让用户自由调整窗口位置。 5. **事件处理**: 要实现...
在Swing中,我们主要使用`JDesktopPane`作为主容器来容纳MDI子窗口,而`JInternalFrame`则用来创建和管理这些子窗口。下面我们将详细探讨如何在Java中创建一个简单的MDI示例。 1. **导入必要的库** 首先,我们需要...
3. **管理视图切换**:通过设置容器的`setVisibleIndex`方法来控制当前可见的视图。此外,还需要开发一套机制来管理视图的添加、删除以及保存状态等功能。 通过上述步骤,可以有效地使用卡片布局管理器来构建一个...
介绍Frame和Panel容器的使用方法和时机。针对JFrame,JInternalFrame,JLayeredPane,JPanel,JScrollBar,JSplitPane,JTabbedPane写有详细的可执行代码。
在使用JMenuBar类时,需要注意菜单栏的位置,可以使用setJMenuBar()方法将菜单栏添加到JFrame、JDialog、JApplet或JInternalFrame中。该方法类似于java.awt.Frame的setMenuBar()方法,用于将菜单栏添加到容器中。 ...
6. 支持使用`JOptionPane`或特殊构造的`JInternalFrame`来创建内部对话框。 7. 不监听标准窗口事件,而是使用`JInternalFrameListener`来处理特定的内部框架事件。 #### 按钮(JButton) `JButton`是Swing中最基本...
4. **JInternalFrame**:在 `addIFrame` 方法中,可以看到系统支持添加 `JInternalFrame` 子窗体到 `JDesktopPane` 中,这使得用户可以在主窗口中打开多个相关的功能窗口。 5. **布局管理**:`Main` 类中使用了 `...
8. **DialogDemo.class**: 另一个对话框的演示程序,可能包含了`java.awt.Dialog`类的用法,展示了如何创建和使用基本对话框。 9. **OptionDialog.class**: 可能是一个自定义的选项对话框,允许用户从多个选项中...
`JInternalFrame()`和`JInternalFrame(String title)`是创建方法。 - `JLayeredPane`:允许组件在不同的层次上重叠。`JLayeredPane()`是其构造方法。 - `JRootPane`:每个JFrame和JDialog都包含一个JRootPane,它...
"Java Swing, 2nd Edition"这本书可能涵盖了Swing组件的详细使用方法,包括组件的属性、方法和构造函数。它可能还会讲解如何自定义组件,使用装饰器模式增强组件的功能。除此之外,书中可能会深入讨论Swing的布局...
7. **Swing小组件(JInternalFrame和JSplitPane)**:Swing还提供了可以在其他组件内部使用的组件,如JInternalFrame(用于创建框架内的框架)和JSplitPane(用于分割组件区域)。 8. **国际化和 Accessibility**:...
这里使用了 `cardPane` 来管理不同的视图状态,并且通过调用 `setCurrViewPane` 方法来改变当前视图的状态。此外,还需要更新所有打开的文档窗口的位置和大小。 ```java public void switchViewState() { if ...
在IT领域,图形用户界面(GUI)设计是用户体验的...理解和掌握这些组件的特性和用法,对于开发高效、用户友好的应用程序至关重要。通过合理地组合和配置这些组件,开发者可以创建出满足各种功能和视觉要求的GUI界面。
在这个“Java Swing 图形界面开发--文章的源码”压缩包中,包含了与CSDN博客文章《xietansheng》相关的所有示例代码,这些代码都是使用Eclipse IDE编写的。 1. **Java Swing组件**: - Swing 提供了多种组件,如 ...