另,JTabbedPane是用来做选择卡的,好象和子窗口没什么关系吧?:)

解决方案 »

  1.   

    能不能说得详细一点,怎么让这些子窗口在父窗口中比较安全地运行,就象WORD开多个窗口一样的效果。
      

  2.   

    use JFrame instead of JTabbedPane
    multi threads
    implements Runnable interface
      

  3.   

    难道我只要多加几个JFrame,它就自动是子窗口吗??
      

  4.   

    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 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();
         frame.setVisible(true); //necessary as of kestrel
            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);
        }
    }
    ////////////////
    import javax.swing.JInternalFrame;import java.awt.event.*;
    import java.awt.*;public class MyInternalFrame extends JInternalFrame 
    {
        static int openFrameCount = 0;
        static final int xOffset = 30, yOffset = 30;    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);
            //Set the window's location.
           // setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
        }
    }
      

  5.   

    只要创建一个MDI窗口就行了!
      

  6.   

    to see the sample program: swingset!
      

  7.   

    jInternalFrame好象跟jFrame不兼容的,那怎么在子窗口上面加canvas呢?