1

我在主框架中创建了一个内部框架,我想从旧框架中打开另一个内部框架。

我不知道该怎么做。有什么建议么?

我尝试了许多不同的方法来打开另一个内部框架:

  • 我使用了 setVisible(true) 方法,但它不起作用。
  • 我创建了 mainFrame 的对象,但没有得到正确的方法。

我用谷歌搜索并搜索了 Stack Overflow,但找不到任何答案。

4

2 回答 2

5

好吧,您可以从 Java 教程How to Use Internal Frames开始

但是一个可能的过程可能是这样的

JInternalFrame newFrame = JInternalFrame();
newFrame.setBounds(10, 10, 100, 100);
newFrame.setVisible(true);
getParent().add(newFame); // assuming our current class is a JInternalFrame on a JDeskTop
于 2012-08-14T09:05:03.837 回答
2

你可以做这样的事情:

public class InternalFrameDemo extends JFrame {
    static int openFrameCount = 0;
    static final int xOffset = 30, yOffset = 30;

    JDesktopPane desktop;

    public InternalFrameDemo() {
        super("InternalFrameDemo");
        final int inset = 50;
        final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(inset, inset, screenSize.width - inset * 2, screenSize.height - inset * 2);

        // Set up the GUI.
        desktop = new JDesktopPane(); // a specialized layered pane
        createFrame(); // create first "window"
        setContentPane(desktop);
    }

    protected void createFrame() {
        final JInternalFrame frame = new JInternalFrame("Document #" + ++openFrameCount);
        frame.setLocation(xOffset * openFrameCount, yOffset * openFrameCount);
        frame.setSize(200, 100);
        frame.setVisible(true);
        frame.getContentPane().add(createButton());
        desktop.add(frame);
        try {
            frame.setSelected(true);
        } catch (final java.beans.PropertyVetoException e) {
        }
    }

    private JButton createButton() {
        return new JButton(new AbstractAction("New") {
            @Override
            public void actionPerformed(final ActionEvent e) {
                createFrame();
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame.setDefaultLookAndFeelDecorated(true);
        final InternalFrameDemo frame = new InternalFrameDemo();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(final String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

InternalFrameDemo.java的改编

于 2012-08-14T09:18:19.703 回答