创建型模式之单例模式(多文档窗口)
2015-10-31 12:27
295 查看
题目:使用单例模式设计一个多文档窗口,要求在主窗体中某个内部子窗体只能实例化一次,即只能弹出一个相同的子窗体。
类图
Eclipse运行效果图
类图
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() { @Override public 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运行效果图
相关文章推荐
- Xcode的Architectures和Valid Architectures的区别,
- php设计模式小结
- Android触摸事件分发机制
- Cocos2d-x 3.0rc0 的Win32工程添加CocoStudio库
- Android 性能优化
- mysql 使用inet_aton和inet_ntoa处理ip地址数据
- JavaScript单线程和浏览器事件循环简述
- DL:Hopfield 神经网络
- CSDN博客添加加QQ好友按钮
- Appium+Robotframework实现Android应用的自动化测试-7:模拟器频繁挂掉的解决方案
- Android编程之Button控件用法实例分析
- 添加一个自定义PhotoView并且实现摆放(类似发动态添加图片)
- Java抽象类和抽象方法概述
- 玩程序 之 一 . 字符串处理工具(可通过C#脚本扩展)
- leetcode之Bulls and Cows
- 清除本机的RSA公钥
- 智能该如何做
- Appium+Robotframework实现Android应用的自动化测试-6:一个简单的例子
- JS组件系列——Bootstrap Table 表格行拖拽
- Appium+Robotframework实现Android应用的自动化测试-5:RIDE中AppiumLibrary的配置