0

私は何時間もこれに取り組んできましたが、困惑しています。JFrame 内に JPanel を追加するこのコードがあります。問題は、Frame を設定すると FrameFree Designに表示されないことです。フレームをBorder Layoutコードに設定すると、正常に動作します。私がやりたいのはFree Design、JPanel を好きなように配置してサイズを変更できる場所でこれを機能させることです。フレームに配置する次のコードを次に示します。

        canvas = new Canvas();
        canvas.setVisible(true);
        canvas.setImage(file);
        GroupLayout canvasLayout = new GroupLayout(canvas);
        canvas.setLayout(canvasLayout);
        canvas.setPreferredSize(new Dimension(100, 100));
        //canvas.setSize(200,200);
        //canvas.setPreferredSize(null);
        add(canvas);
        revalidate();

フリー デザイン モードを使用すると何が足りないのですか? レイアウトを構築するコードは次のとおりです。

private void initComponents() {

    jInternalFrame1 = new javax.swing.JInternalFrame();

    jInternalFrame1.setVisible(true);

    javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
    jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
    jInternalFrame1Layout.setHorizontalGroup(
        jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );
    jInternalFrame1Layout.setVerticalGroup(
        jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("PocketShop");
    setName("main");

    pack();
}
4

1 に答える 1

1

JInternalFrameを廃止する

JInternalFrameは、JDesktopPane内の子供向けです。ウィンドウ内の親切なウィンドウ、いわゆるMDI、マルチドキュメントインターフェイス、SDI、シングルドキュメントインターフェイスとは対照的。

Canvasの代わりにJPanelを使用する

Canvasは、古いネイティブプラットフォームAWT、コンポーネント、JPanel of Swing、JComponentのものです。ここでpaintComponentをオーバーライドできます。

フリーデザインのレイアウトでは、NetBeansIDEと同じようにGUIエディタを使用します。私はそうします、そしてそれであなたをさらにそこに助けることはできません。

可能であれば、再検証を使用しないでください。


Canvasを手動で追加する場合は、JPanelを追加して、カスタム作成コードnew Canvas()またはとして設定してみてくださいcanvas

于 2012-11-14T15:59:20.877 に答える