1、废话不多说,上图看效果
2、上代码:
package UI;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JLayeredPane;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
public class test extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
test frame = new test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 699, 443);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JDesktopPane desktopPane = new JDesktopPane();
contentPane.add(desktopPane, BorderLayout.CENTER);
JInternalFrame internalFrame = new JInternalFrame("New JInternalFrame");
internalFrame.setBounds(21, 207, 236, 156);
desktopPane.add(internalFrame);
JInternalFrame internalFrame_3 = new JInternalFrame("New JInternalFrame");
internalFrame_3.setBounds(522, 32, 57, 34);
desktopPane.add(internalFrame_3);
JInternalFrame internalFrame_4 = new JInternalFrame("New JInternalFrame");
internalFrame_4.setBounds(606, 32, 57, 34);
desktopPane.add(internalFrame_4);
JInternalFrame internalFrame_5 = new JInternalFrame("New JInternalFrame");
internalFrame_5.setBounds(21, 32, 236, 165);
desktopPane.add(internalFrame_5);
JInternalFrame internalFrame_6 = new JInternalFrame("New JInternalFrame");
internalFrame_6.setBounds(267, 207, 167, 156);
desktopPane.add(internalFrame_6);
JInternalFrame internalFrame_8 = new JInternalFrame("New JInternalFrame");
internalFrame_8.setBounds(267, 32, 167, 165);
desktopPane.add(internalFrame_8);
JInternalFrame internalFrame_9 = new JInternalFrame("New JInternalFrame");
internalFrame_9.setBounds(606, 76, 57, 34);
desktopPane.add(internalFrame_9);
internalFrame_9.setVisible(true);
internalFrame_8.setVisible(true);
internalFrame_6.setVisible(true);
internalFrame_5.setVisible(true);
internalFrame_4.setVisible(true);
internalFrame_3.setVisible(true);
internalFrame.setVisible(true);
}
}
3、实现过程
4、JDesktopPane简介:
JDesktopPane是用来做什么的
JInternalFrame的使用
类层次结构图:
java.lang.Object
--java.awt.Component
--java.awt.Container
--javax.swing.JComponent
--javax.swing.JInternalFrame
JinternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JinternalFrame是lightweight component ,也就是说JInternalFrame不能单独出现,必须依附在最上层组件上。由于这个特色,JInternalFrame能够利用java提供的Look and Feel功能作出完全不同于原有操作系统所提供的窗口外型,也比JFrame更具有弹性。
一般我们会将JInternalFram加入JDesktopPane方便管理,JDesktopPane是一种特殊的JLayeredpane,用来建立虚拟桌面(Vitual Desktop).它可以显示并管理众多JInternalFrame之间的层次关系。以下是JDesktopPane的类层次结构图;
类层次结构图:
java.lang.Object
--java.awt.Component
--java.awt.Container
--javax.swing.JComponent
--javax.swing.JLayeredPane
--javax.swing.JDesktop