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