0

私が取り組んでいるプロジェクトで GridBagLayout を使用していますが、問題は、自分のコンピューターまたは大学の他のコンピューターでコンパイルすると、希望する方法が適切に表示されることです。

適切な方法

しかし、別のPCで実行すると、表示が異なり、左上のパネルとレーダーパネルが本来あるべきものとは異なります。

進入禁止

どちらも同じ JDK を使用しており、NetBeans 7.3 を使用しているため、どこに問題があるのか​​わかりません。

これは、パネルをフレームに追加するために使用している方法です。

private void agregarPaneles() {

    this.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(10, 10, 10, 10);
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    add(scrollerVuelos, gbc);
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    add(panelEstado, gbc);
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    gbc.gridheight = 1;
    add(panelOrdenes, gbc);
    gbc.gridx = 0;
    gbc.gridy = 1;
    gbc.gridwidth = 3;
    gbc.gridheight = 1;
    add(panelRadar, gbc);

}
4

2 に答える 2

2

あなたが投稿したコードは、正確な答えを得るのに十分ではありませんが、一般的に:

コンポーネントを適切なサイズで表示するのに十分なスペースが GridBagLayout にない場合、コンポーネントの最小サイズが使用されます。多くのコンポーネントは最小サイズが小さいため、コンポーネントはほとんど何も縮小されません。

そのため、パネルに最小サイズを設定する必要がある場合があります。コンポーネントのサイズ変更方法に影響を与えるため、weightX と weighty の値を確認することもできます。

How to Use GridBagLayout詳細と例については、Swing チュートリアルを参照してください。

また、レイアウトが簡単になる場合は、異なるレイアウト マネージャーでネストされたパネルを使用できることも覚えておいてください。たとえば、メイン レイアウトは BorderLayout にする必要があります。次に、北に GridLayout を使用してパネルを追加します。CENTER で、他のパネルを追加します。

于 2013-10-20T20:08:34.413 に答える
2

コンポーネントの推奨サイズがフレームの使用可能なスペースに収まらず、GridBagLayout代わりにコンポーネントの最小サイズを使用するように戻っている可能性があります。

GridBagConstraints#weightxand GridBagConstraints#weightyandGridBagConstraints#fill = GridBagConstraints.BOTHを使用して、コンポーネントがセル内の利用可能なスペース全体を使用するように強制することができます

フレームのサイズを手動で設定するのではなく、を使用Frame#packしてフレームをパックする必要があります。これにより、コンテンツの優先サイズの要件を満たすことができるようにフレームのサイズが変更されます。

于 2013-10-20T20:57:01.007 に答える