首先, 我用的是NETBEANS拖控件的形式, 做了一个jFrame(FrameMain)。
我希望点击CHICK事件后, 在FrameMain会出现jInternalFrame, 也就是弹出MDI子窗体, 要如何实现呢?//构造函数和一些变量
    JDesktopPane desktopPane = new JDesktopPane();
    Container contentPane = this.getContentPane();
    int FrameCount = 1;
    public FormMain() {
        initComponents();
        
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new BorderLayout());
        contentPane.add(desktopPane, BorderLayout.CENTER); //增加一个桌面面板, 用于存放InternalFrame        
        setSize(1024, 768);
        setLocationRelativeTo(null);
    }
//netbeans生成的CLICK事件
    private void jmiBookAddMouseClicked(java.awt.event.MouseEvent evt) {                                        
        
        JInternalFrame internalFrame = new JInternalFrame("Internal Frame "+ (FrameCount++) , true, true, true, true);  
        //myInternalFrame internalFrame = new myInternalFrame("dd");
        internalFrame.setLocation( 20,20);
        internalFrame.setSize(300, 300);
        internalFrame.setVisible(true);
        desktopPane.add(internalFrame);
    }                         可是, 如上的话不报错, 不过就是没有jInternalFrame显示, 求助了。

解决方案 »

  1.   

    你DEBUG一下看看click事件有没有响应
      

  2.   

    现在我知道错误在哪里了, 呵呵。就是JMENUBAR是不响应事件的, JMENUITEM才响应
    现在我的问题改为, 怎样编辑(用NETBEANS手动编辑)一个JINTERNALFRAME后, 继承之?默认可是PRIVATE的啊!
      

  3.   

    建议楼主看看你JDK安装目录下的\demo\jfc中的SwingSet2这个例子,里面有内部窗体的例子及源代码
      

  4.   

    先谢谢了, 可是那个例子好是好, 太长了, 看不下去了
    PS:我现在会做了, 呵呵。先在窗体的“其他组件”中添加一个JINTERNALFRAME, 在窗体中拉一个JDESKTOPPANE。然后需要用到那个JInternalFrame的时候, 
    就把JInternalFrame添加到JDesktopPane.大概思路就是这样的, 为什么一直却没有显示呢?冤啊! 原来要在把JInternalFrame添加到JDesktopPane以前, 增加2句SETVISIBLE, SETSIZE。否则就等于不显示。
    这个贴就当散分贴吧, 呵呵。
      

  5.   


        private void jmiBookAddMouseClicked(java.awt.event.MouseEvent evt)   {                                        
            
            JInternalFrame internalFrame = new JInternalFrame("Internal Frame "+ (FrameCount++) , true, true, true, true);  
            internalFrame.setLocation( 20,20);
            internalFrame.setSize(300, 300);
            internalFrame.setVisible(true);
            desktopPane.add(internalFrame);
        }