您的位置:首页 > 其它

创建型模式之单例模式(多文档窗口)

2015-10-31 12:27 295 查看
题目:使用单例模式设计一个多文档窗口,要求在主窗体中某个内部子窗体只能实例化一次,即只能弹出一个相同的子窗体。

类图



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运行效果图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: