1

メイン フレームに内部フレームを作成しましたが、古い内部フレームから別の内部フレームを開きたいと考えています。

私はそれを行う方法がわかりません。助言がありますか?

別の内部フレームを開くために、さまざまな方法をいくつか試しました。

  • setVisible(true) メソッドを使用しましたが、機能しません。
  • mainFrame のオブジェクトを作成しましたが、正しいメソッドを取得できませんでした。

私はそれをグーグルで検索し、スタックオーバーフローを検索しましたが、答えが見つかりませんでした。

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 に答える