0

私は Netbeans Gui の開発に慣れていません。GUI を Netbeans gui のようにしようとしていますが、メイン フレームを最大化しても内部フレームのサイズが変更されません。グリッドバッグレイアウトを使用してJdesktoppaneにJinternalframesを配置するときに承認するオプションがないためです。jdesktoppane netbeans を使用しないと、水平方向と垂直方向の自動サイズ変更のオプションが提供されます。

デスクトップペインのみがサイズ変更され、他の内部フレームは同じサイズのままであることがわかりません

4

2 に答える 2

1

netbeans は、内部コンポーネントの自動サイズ変更オプションを提供しません。

自動サイズ変更プロパティはありません。内部フレームごとに「最大化」プロパティがあります。一度に最大化できるフレームは 1 つだけです。この場合、最大化されたフレームは、デスクトップ ペインで自動的にサイズ変更されます。

デスクトップ ペインのサイズ変更に合わせてすべての内部フレームのサイズを変更する場合は、デスクトップ ペインに を追加し、イベントが生成されComponentListenerたときに各内部フレームのサイズを手動で変更する必要があります。componentResized()

内部フレームを JDesktopPane に配置しない場合、各 Jinternalframe の自動サイズ変更のオプションがあり、通常どおりサイズ変更されます

これは、内部フレームを追加するパネルのレイアウト マネージャーによって行われます。JDesktopPane は、このように動作するようには設計されていません。ユーザーがコンポーネントをデスクトップ上でランダムにドラッグできるように設計されています。

于 2013-10-19T20:31:51.633 に答える
0

親のサイズ変更時に JInternalFrames のサイズを変更する場合は、自分で行う必要があります。レイアウトマネージャーを使用してもこれは行われません.camickrが言うように、とにかくJDesktopPaneにレイアウトマネージャーを使用するべきではありません.

内部フレームのサイズを変更する場合は、JFrame に ComponentListener を設定し、setBounds() を使用して内部フレームを選択した比率にサイズ変更する必要があります。

@Override public void componentResized(ComponentEvent e) {
    if (e.getSource() == yourFrame) {

        yourInternalFrame1.setBounds(0, 0, yourFrame.getContentPane().getWidth() / 4, yourFrame.getContentPane().getHeight());
        yourInternalFrame2.setBounds(yourFrame.getContentPane().getWidth() / 4, 0, yourFrame.getContentPane().getWidth() / 2, yourFrame.getContentPane().getHeight() / 2);

        // and so on
        // also can use yourDesktopPane instead of yourFrame.getContentPane()

    }
}
于 2013-10-19T20:33:15.477 に答える