创建型模式之单例模式(多文档窗口)
来源:互联网 发布:广联达结算软件5.0 编辑:程序博客网 时间:2024/06/05 02:01
题目:使用单例模式设计一个多文档窗口,要求在主窗体中某个内部子窗体只能实例化一次,即只能弹出一个相同的子窗体。
类图
package cn.factory5;import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JButton;import javax.swing.JDesktopPane;import javax.swing.JFrame;import javax.swing.JInternalFrame;import javax.swing.JTextArea;public class JInternalFrameDemo extends JFrame implements ActionListener {private static JInternalFrame1 internalFrame;Container contentPane = this.getContentPane();public JInternalFrameDemo(){super("主窗体");contentPane.setLayout(new BorderLayout());JButton button = new JButton("创建一个子窗体");button.addActionListener(this);contentPane.add(button, BorderLayout.SOUTH);this.setSize(new Dimension(300, 300));this.setVisible(true);this.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}public void actionPerformed(ActionEvent e) {internalFrame = JInternalFrame1.getJInternalFrame1("子窗体", true, true, true, true);internalFrame.setSize(new Dimension(200, 200));internalFrame.setVisible(true);JDesktopPane desktopPane = new JDesktopPane();contentPane.add(desktopPane);desktopPane.add(internalFrame);try {internalFrame.setSelected(true);} catch (java.beans.PropertyVetoException ex) {System.out.println("Exception while selecting");}}}
package cn.factory5;import javax.swing.JInternalFrame;public class JInternalFrame1 extends JInternalFrame{private static JInternalFrame1 JIF1 = null;private JInternalFrame1(String name, boolean b1, boolean b2, boolean b3, boolean b4){super(name, b1, b2, b3, b4);}public static JInternalFrame1 getJInternalFrame1(String name, boolean b1, boolean b2, boolean b3, boolean b4){if(JIF1 == null)JIF1 = new JInternalFrame1(name, b1, b2, b3, b4);return JIF1;}}
package cn.factory5;public class Client {public static void main(String args[]){ new JInternalFrameDemo();}}
Eclipse运行效果图
0 0
- 创建型模式之单例模式(多文档窗口)
- 单例模式--实现多文档窗口(MDI)
- 创建型模式之单例模式
- 创建型模式之单例模式
- 创建型模式之单例模式
- 创建型模式之单例模式
- 创建型模式之单例模式
- 创建型模式之单例模式
- 创建型模式之单例模式
- 创建型模式之单例模式(Singleton)
- java设计模式(创建型)之单例模式
- 创建型:设计模式之单例模式(三)
- JAVA设计模式之单例模式(创建型)
- 设计模式之----创建型模式(三)-----单例模式
- 创建型模式之原型模式和单例模式
- 设计模式 创建型模式之单例模式
- 设计模式之创建型模式---单例模式
- Java设计模式之创建型模式--单例模式
- AngularJS $watch的用法
- mysql 使用inet_aton和inet_ntoa处理ip地址数据
- Android 性能优化
- Redmine中用户密码的加密算法(附代码)
- Xcode的Architectures和Valid Architectures的区别,
- 创建型模式之单例模式(多文档窗口)
- JQuery原理介绍及学习方法
- 自定义发动态的Controller(有工具条,自定义textView,和photosView)
- [置顶] vs 2015 编译cocos2dx 报错
- openwrt学习:make menuconfig的一些笔记
- Gson解析数组多类型元素
- Shader 学习笔记 20151031
- windows下面用git for windows 分分钟教你怎么上传文件到github
- Android 亮度调节