当前位置: 代码迷 >> J2SE >> java se 单例模式有关问题
  详细解决方案

java se 单例模式有关问题

热度:1799   发布时间:2013-02-25 00:00:00.0
java se 单例模式问题
好吧,就这么简单,无法实现单例模式,代码我网上找的,自己修改了下,具体的自己不太懂
求高人解答

Java code
import java.awt.Color;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.util.HashMap;import java.util.Map;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.TitledBorder;public class ColorTest extends JFrame implements ItemListener {  private static final long serialVersionUID = 1L;     //菜单栏     private JMenuBar menubar = new JMenuBar();    private JMenu fileMenu = new JMenu("基本信息设置");    private JMenuItem newMenuItem = new JMenuItem("客户信息设置");    private JMenuItem openMenuItem = new JMenuItem("货运方式设置");    private JMenuItem saveMenuItem = new JMenuItem("联系人设置");    private JMenuItem saveAsMenuItem = new JMenuItem("设备信息设置");    private JMenuItem exitMenuItem = new JMenuItem("员工管理");        private JMenuItem goodsStyle = new JMenuItem("货单类型");    private JMenuItem extraSetting = new JMenuItem("附件设置");        private JMenu configMenu = new JMenu("编辑打印报表");    private JMenuItem backgroudMusicMenu=new JMenuItem("编辑收发货单");    private JMenuItem backColorMenu = new JMenuItem("编辑维修单");        //第一个Jpanel里的内容        JLabel jl1=new JLabel("客户名称");    JCheckBox jcb1=new JCheckBox("查询");        //客户名称    JTextField jt=new JTextField(10);    String str[]={"AAA","BBB","CCC"};    JComboBox JCB=new JComboBox(str);            //客户地址    JLabel jl2=new JLabel("客户地址");    JTextField jf1=new JTextField();        //联系人    JLabel jl3=new JLabel("联系人");    String str2[]={"AAA","BBB","CCC"};    JComboBox JCB2=new JComboBox(str);        //手机    JLabel jl4=new JLabel("手机");    JTextField jtf2=new JTextField();        //联系电话    JLabel jl5=new JLabel("联系电话");    JTextField jtf3=new JTextField();                //功能按钮    JButton jb1=new JButton("清空客户信息");    JButton jb2=new JButton("创建客户");            //单例模式代码    private static Map<String,ColorTest> map = new HashMap<String,ColorTest>();         static{             ColorTest single = new ColorTest();             map.put(single.getClass().getName(), single);        }                           public static void main(String args[]) {  try {   ColorTest single3 = ColorTest.getInstance(null);    } catch (Exception e) {   e.printStackTrace();  } } /**  * Create the frame  */ /** *  */protected ColorTest() {  super("维修单收发货程序");  getContentPane().setLayout(null);  setBounds(40, 40, 900, 660);  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  final JPanel panel = new JPanel();  panel.setBorder(new TitledBorder(null, "客户信息", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, Color.BLUE));  panel.setLayout(null);  panel.setBounds(30, 25, 800, 155);  getContentPane().add(panel);  final JButton button = new JButton();  button.setBounds(84, 74, 106, 28);  button.setText("New JButton");  //panel.add(button);    //上面的Jpanel内容添加    jl1.setBounds(22,10,55,40);  panel.add(jl1);    jcb1.setBounds(85,10,55,40);  panel.add(jcb1);      //菜单栏添加代码    this.setJMenuBar(menubar);    menubar.add(fileMenu);    menubar.add(configMenu);        fileMenu.add(newMenuItem);    fileMenu.add(openMenuItem);    fileMenu.add(saveMenuItem);    fileMenu.add(saveAsMenuItem);        fileMenu.add(exitMenuItem);    fileMenu.add(goodsStyle);    fileMenu.add(extraSetting);        configMenu.add(backgroudMusicMenu);    configMenu.add(backColorMenu);        //下拉菜单1(JPanel)              JCB.setMaximumRowCount(3);     JCB.addItemListener(this);          JCB.setLayout(null);     JCB.setBounds(22,50,200,20);          panel.add(JCB);         //文本框1     jl2.setLayout(null);     jl2.setBounds(260,10,53,43);     panel.add(jl2);          jf1.setLayout(null);     jf1.setBounds(260,50,370,22);     panel.add(jf1);          //下拉菜单3          jl3.setLayout(null);     jl3.setBounds(22,80,53,22);     panel.add(jl3);          JCB2.setMaximumRowCount(3);     JCB2.addItemListener(this);     JCB2.setLayout(null);     JCB2.setBounds(22,110,198,20);     panel.add(JCB2);          //文本框2          jl4.setLayout(null);     jl4.setBounds(260,70,50,50);     panel.add(jl4);          jtf2.setLayout(null);     jtf2.setBounds(260,110,140,20);     panel.add(jtf2);          //文本框3     jl5.setLayout(null);     jl5.setBounds(445,70,70,50);     panel.add(jl5);          jtf3.setLayout(null);     jtf3.setBounds(445,110,185,20);     panel.add(jtf3);          //第一个JPanel的右边2个按钮     jb1.setLayout(null);     jb1.setBounds(650,70,130,30);     panel.add(jb1);                              this.setResizable(false);     this.setVisible(true);   }//单例模式代码public static ColorTest getInstance(String name) {         if(name == null) {            name = ColorTest.class.getName();            System.out.println("name == null"+"--->name="+name);         }        if(map.get(name) == null) {           try {                 map.put(name, (ColorTest) Class.forName(name).newInstance());           } catch (InstantiationException e) {                 e.printStackTrace();            } catch (IllegalAccessException e) {                 e.printStackTrace();            } catch (ClassNotFoundException e) {                e.printStackTrace();            }        }       return map.get(name);    }@Overridepublic void itemStateChanged(ItemEvent e) {    // TODO Auto-generated method stub    }}
  相关解决方案