一个关于单实例的问题
最近在写一个虚拟教室的东东,其实也不是什么特难的东东,只是用到了我们以前未用过的新东东罢了,比如说JGroups等。
在写一个swing的界面时候碰到一个关于单例程的问题,在毛哥的帮助下,得到了解决...
下面我写了一个简单的界面东西,把问题展示出来。由于代码简单就没写注释了。相信大家都能看懂的。
这个类没什么问题
package test;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.DefaultListModel;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JList;/** * * @author ljp * */public class JListTestFrame extends JFrame{private static JList list;private static DefaultListModel model;private static JListTestFrame frame;private JButton btn;public static JListTestFrame getInstance(){if(frame==null){frame=new JListTestFrame();}return frame;}public JListTestFrame(){init();}public void init(){btn=new JButton();list=new JList();model=new DefaultListModel();list.setModel(model);setLayout(new BorderLayout());add(list,BorderLayout.CENTER);add(btn,BorderLayout.SOUTH);setSize(200,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);btn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){new JListThread().start();}});}public static DefaultListModel getModel(){return model;}public static JListTestFrame getFrame(){return frame;}public static void main(String args[]){new JListTestFrame().setVisible(true);}}
package test;import javax.swing.DefaultListModel;/** * * @author ljp * */ public class JListThread extends Thread{public void run(){JListTestFrame frame=JListTestFrame.getInstance();DefaultListModel model=frame.getModel();int i=0;while(i<10){String name="list -"+i;model.addElement(name);i++;}}}
JListTestFrame frame=JListTestFrame.getFrame();
JListTestFrame.getInstance().equals(frame);