我创建的JInterNalFrame不显示 
运行MainFrame时菜单和JDesktopPane(我设置了颜色显示)显示正常,可是点菜单栏中的“更改密码”时 不出现ChangePWFrame 达人帮忙看看 谢谢
有关代码如下
1.MainFrame.java————————————————————————
public class MainFrame extends javax.swing.JFrame {
private static MainFrame mainFrame;
private JDesktopPane desktopPane;
   public static MainFrame getMainFrame()
 {
  if(mainFrame==null)
  {
   mainFrame=new MainFrame();
  }
  return mainFrame;
 }    /** Creates new form MainFrame */
    public MainFrame() {
        super("进销存管理系统");
        desktopPane=new JDesktopPane();
  desktopPane.setOpaque(true);        //desktopPane.setLocation(100,111);
  this.setContentPane(desktopPane);        
        //this.add(desktopPane);
  desktopPane.setBackground(new Color(200,218,2));
        System.out.println("1111111111");
  // Make dragging a little faster but perhaps uglier.
  desktopPane.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
        initComponents();
    }
  private void initComponents() {
jLabel1.setText("操作员");        jLabel2.setText("业务日期");        jMenu6.setText("文件");        jMenuItem20.setText("修改密码");
        jMenuItem20.addActionListener(MainAction.ChangePW());
        jMenu6.add(jMenuItem20);

2.MainAction.java—————————————————————————
public class MainAction {
    public static ActionListener ChangePW(){
        return new ActionListener()
  {   public void actionPerformed(ActionEvent e)
   {                
    ChangePWFrame changePasswordFrame = new ChangePWFrame();
    MainFrame.getMainFrame().getContentPane().add(
      changePasswordFrame);
                System.out.println("222222222222");
    changePasswordFrame.setVisible(true);
   }
  };
    }

3.ChangePWFrame.java___________________________________________public class ChangePWFrame extends JInternalFrame {    /** Creates new form ChangePWFrame */
    public ChangePWFrame() {
        super("更改密码", true, true, true, true);
        initComponents();
    } 
(initcomponents是netbeans设计GUI时自动生成的)

解决方案 »

  1.   

    贴全MainFrame的代码,否则不好跟踪。
      

  2.   

    MainFrame的全部代码
    package View;
    public class MainFrame extends javax.swing.JFrame {
    private static MainFrame mainFrame;
    private JDesktopPane desktopPane;
       public static MainFrame getMainFrame()
    {
    if(mainFrame==null)
    {
    mainFrame=new MainFrame();
    }
    return mainFrame;
    }    /** Creates new form MainFrame */
        public MainFrame() {
            super("进销存管理系统");
            desktopPane=new JDesktopPane();
    desktopPane.setOpaque(true);        //desktopPane.setLocation(100,111);
    this.setContentPane(desktopPane);        
            //this.add(desktopPane);
    desktopPane.setBackground(new Color(200,218,2));
            System.out.println("1111111111");
    // Make dragging a little faster but perhaps uglier.
    desktopPane.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
            initComponents();
        }    /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {        jLabel1 = new javax.swing.JLabel();
            jTextField1 = new javax.swing.JTextField();
            jLabel2 = new javax.swing.JLabel();
            jTextField2 = new javax.swing.JTextField();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu6 = new javax.swing.JMenu();
            jMenuItem20 = new javax.swing.JMenuItem();
            jMenuItem21 = new javax.swing.JMenuItem();
            jMenuItem30 = new javax.swing.JMenuItem();
            jSeparator4 = new javax.swing.JSeparator();
            jMenuItem22 = new javax.swing.JMenuItem();
            jMenuItem23 = new javax.swing.JMenuItem();
            jSeparator5 = new javax.swing.JSeparator();
            jMenuItem24 = new javax.swing.JMenuItem();
            jMenuItem25 = new javax.swing.JMenuItem();
            jSeparator6 = new javax.swing.JSeparator();
            jMenuItem26 = new javax.swing.JMenuItem();
            jMenuItem27 = new javax.swing.JMenuItem();
            jMenu1 = new javax.swing.JMenu();
            CGin = new javax.swing.JMenuItem();
            CGout = new javax.swing.JMenuItem();
            CGpay = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
            XSout = new javax.swing.JMenuItem();
            XSin = new javax.swing.JMenuItem();
            XSpay = new javax.swing.JMenuItem();
            jMenu3 = new javax.swing.JMenu();
            KCsearch = new javax.swing.JMenuItem();
            KCtiaobo = new javax.swing.JMenuItem();
            JSeparator3 = new javax.swing.JSeparator();
            otherin = new javax.swing.JMenuItem();
            otherout = new javax.swing.JMenuItem();
            jSeparator3 = new javax.swing.JSeparator();
            KCbaojing = new javax.swing.JMenuItem();
            jMenu4 = new javax.swing.JMenu();
            jMenu8 = new javax.swing.JMenu();
            jMenuItem1 = new javax.swing.JMenuItem();
            jMenuItem2 = new javax.swing.JMenuItem();
            jMenuItem3 = new javax.swing.JMenuItem();
            jMenu9 = new javax.swing.JMenu();
            jMenuItem4 = new javax.swing.JMenuItem();
            jMenuItem5 = new javax.swing.JMenuItem();
            jMenuItem6 = new javax.swing.JMenuItem();
            jMenu10 = new javax.swing.JMenu();
            jMenuItem7 = new javax.swing.JMenuItem();
            jMenuItem8 = new javax.swing.JMenuItem();
            jMenuItem9 = new javax.swing.JMenuItem();
            jSeparator1 = new javax.swing.JSeparator();
            jMenu11 = new javax.swing.JMenu();
            jMenuItem10 = new javax.swing.JMenuItem();
            jMenuItem12 = new javax.swing.JMenuItem();
            jMenuItem11 = new javax.swing.JMenuItem();
            jSeparator2 = new javax.swing.JSeparator();
            jMenuItem14 = new javax.swing.JMenuItem();
            jMenuItem13 = new javax.swing.JMenuItem();
            jMenu5 = new javax.swing.JMenu();
            jMenuItem15 = new javax.swing.JMenuItem();
            jMenuItem16 = new javax.swing.JMenuItem();
            jMenu12 = new javax.swing.JMenu();
            jMenuItem17 = new javax.swing.JMenuItem();
            jMenuItem18 = new javax.swing.JMenuItem();
            jMenuItem19 = new javax.swing.JMenuItem();
            jMenu13 = new javax.swing.JMenu();
            jMenu7 = new javax.swing.JMenu();
            jMenuItem29 = new javax.swing.JMenuItem();
            jMenuItem28 = new javax.swing.JMenuItem();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);        jLabel1.setText("操作员");        jLabel2.setText("业务日期");        jMenu6.setText("文件");        jMenuItem20.setText("修改密码");
            jMenuItem20.addActionListener(MainAction.ChangePW());
            jMenu6.add(jMenuItem20);        jMenuItem21.setText("操作员管理");
            jMenuItem21.addActionListener(MainAction.OperatorManage());
            jMenu6.add(jMenuItem21);        jMenuItem30.setText("货品管理");
            jMenu6.add(jMenuItem30);
            jMenu6.add(jSeparator4);        jMenuItem22.setText("数据备份");
            jMenu6.add(jMenuItem22);        jMenuItem23.setText("数据还原");
            jMenu6.add(jMenuItem23);
            jMenu6.add(jSeparator5);        jMenuItem24.setText("月结存");
            jMenu6.add(jMenuItem24);        jMenuItem25.setText("反结存");
            jMenu6.add(jMenuItem25);
            jMenu6.add(jSeparator6);        jMenuItem26.setText("重新登陆");
            jMenu6.add(jMenuItem26);        jMenuItem27.setText("锁定系统");
            jMenu6.add(jMenuItem27);        jMenuBar1.add(jMenu6);        jMenu1.setText("进货管理");        CGin.setText("采购进货");
            jMenu1.add(CGin);        CGout.setText("采购退货");
            jMenu1.add(CGout);        CGpay.setText("采购付款");
            jMenu1.add(CGpay);        jMenuBar1.add(jMenu1);        jMenu2.setText("销售管理");        XSout.setText("销售出库");
            jMenu2.add(XSout);        XSin.setText("销售退货");
            jMenu2.add(XSin);        XSpay.setText("销售收款");
            jMenu2.add(XSpay);        jMenuBar1.add(jMenu2);        jMenu3.setText("库存管理");        KCsearch.setText("库存查询");
            jMenu3.add(KCsearch);        KCtiaobo.setText("库存调拨");
            jMenu3.add(KCtiaobo);
            jMenu3.add(JSeparator3);        otherin.setText("其他入库");
            jMenu3.add(otherin);        otherout.setText("其他出库");
            jMenu3.add(otherout);
            jMenu3.add(jSeparator3);        KCbaojing.setText("库存报警");
            jMenu3.add(KCbaojing);        jMenuBar1.add(jMenu3);        jMenu4.setText("报表");        jMenu8.setText("采购系统报表");        jMenuItem1.setText("采购汇总表");
            jMenu8.add(jMenuItem1);        jMenuItem2.setText("采购汇总表(按货品)");
            jMenu8.add(jMenuItem2);        jMenuItem3.setText("采购汇总表(按供应商)");
            jMenu8.add(jMenuItem3);        jMenu4.add(jMenu8);
           
            setJMenuBar(jMenuBar1);        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(59, 59, 59)
                    .addComponent(jLabel1)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(18, 18, 18)
                    .addComponent(jLabel2)
                    .addGap(39, 39, 39)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(526, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap(554, Short.MAX_VALUE)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel1)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel2)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
            );        pack();
        }// </editor-fold>    /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new MainFrame().setVisible(true);
                }
            });
        }    // Variables declaration - do not modify
    //这些是变量的声明 论坛提示内容太长 我把这些给删掉了
            // End of variables declaration}
      

  3.   

    问题出在用静态的方式访问desktopPane,把Listener放到MainFrame里直接访问desktopPane可以显示出来。我也有点想不通。
      

  4.   

    楼上能说的清楚一些吗 你的意思是把MainAction里的东西加到MainFrame?
    本人菜鸟 
      

  5.   

        public MainFrame() {
            super("进销存管理系统");
            desktopPane=new JDesktopPane();
    desktopPane.setOpaque(true);        //desktopPane.setLocation(100,111);
    this.setContentPane(desktopPane);       
            //this.add(desktopPane);//这里你注释啦
    desktopPane.setBackground(new Color(200,218,2));
            System.out.println("1111111111");
    // Make dragging a little faster but perhaps uglier.
    desktopPane.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
            initComponents();
        }
      

  6.   

    public MainFrame() {
            super("进销存管理系统");
            desktopPane=new JDesktopPane();
      desktopPane.setOpaque(true);        //desktopPane.setLocation(100,111);
      this.setContentPane(desktopPane);       
            //this.add(desktopPane);
      desktopPane.setBackground(new Color(200,218,2));
            System.out.println("1111111111");
      // Make dragging a little faster but perhaps uglier.
      desktopPane.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
            initComponents();
        } 
      

  7.   

    我大致的看了下,分析了下原因,由于你的主程序面板用的是
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    的布局方式,而当你点击按钮时添加的ChangePWFrame添是添加上面去了
    ChangePWFrame changePasswordFrame = new ChangePWFrame(); 
        MainFrame.getMainFrame().getContentPane().add( 
          changePasswordFrame); 
                    System.out.println("222222222222"); 
        changePasswordFrame.setVisible(true); 
    但是你没有添加到你之前面版的布局当中,你尝试着添加到布局中看看有没有这种效果自己尝试着手下而不用IDE学习SWING,等你到一定的基础的时候再用IDE快速编写,我认为是不错的学习方式