JComponent c = (JComponent) internalFrame.getContentPane();
    c.add(new JButton(), BorderLayout.NORTH);
    c.add(new JButton(), BorderLayout.CENTER);

解决方案 »

  1.   

    public class JInternalFrame
    extends JComponent
    implements Accessible, WindowConstants, RootPaneContainer
      

  2.   

    以下是我修改以后的例子:package internalframedemo;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */import javax.swing.JInternalFrame;
    import javax.swing.JDesktopPane;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.JMenuBar;
    import javax.swing.JFrame;
    import javax.swing.*;import java.awt.event.*;
    import java.awt.*;public class InternalFrameDemo extends JFrame {
        JDesktopPane desktop;    public InternalFrameDemo() {
            super("InternalFrameDemo");        //Make the big window be indented 50 pixels from each edge
            //of the screen.
            int inset = 50;
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            setBounds(inset, inset,
                      screenSize.width - inset*2,
                      screenSize.height-inset*2);        //Quit this app when the big window closes.
            addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });        //Set up the GUI.
            desktop = new JDesktopPane(); //a specialized layered pane
            createFrame(); //Create first window
            setContentPane(desktop);
            setJMenuBar(createMenuBar());        //Make dragging faster:
            desktop.putClientProperty("JDesktopPane.dragMode", "outline");
        }    protected JMenuBar createMenuBar() {
            JMenuBar menuBar = new JMenuBar();        JMenu menu = new JMenu("Document");
            menu.setMnemonic(KeyEvent.VK_D);
            JMenuItem menuItem = new JMenuItem("New");
            menuItem.setMnemonic(KeyEvent.VK_N);
            menuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    createFrame();
                }
            });
            menu.add(menuItem);
            menuBar.add(menu);        return menuBar;
        }    protected void createFrame() {
            MyInternalFrame frame = new MyInternalFrame();        JComponent c = (JComponent) frame.getContentPane();
            c.add(new JButton(), BorderLayout.NORTH);
            c.add(new JButton(), BorderLayout.CENTER);        frame.setVisible(true); //necessary as of 1.3; OK to use before
            desktop.add(frame);
            try {
                frame.setSelected(true);
            } catch (java.beans.PropertyVetoException e) {}
        }    public static void main(String[] args) {
            InternalFrameDemo frame = new InternalFrameDemo();
            frame.setVisible(true);
        }
    }
    package internalframedemo;import javax.swing.JInternalFrame;import java.awt.event.*;
    import java.awt.*;
    //import javax.swing.*;public class MyInternalFrame extends JInternalFrame {
        static int openFrameCount = 0;
        static final int xOffset = 30, yOffset = 30;
     //   public JButton button = new JButton();
        public MyInternalFrame() {
            super("Document #" + (++openFrameCount),
                  true, //resizable
                  true, //closable
                  true, //maximizable
                  true);//iconifiable        //...Create the GUI and put it in the window...        //...Then set the window size or call pack...
            setSize(300,300);
    //        add(button);        //Set the window's location.
            setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
        }
    }