2

私の目標は、GridBagConstraints に従ってコンポーネントのサイズを変更することですが、何らかの理由で、アプレットを実行すると、コンポーネントは表示されますが、期待どおりにアプレット全体を埋めません。ここに私のコードがあります:

サーバーパネル:

public class ServerPanel extends JPanel{
    public ServerPanel(){
    setLayout(new GridBagLayout()); //use gridbag layout
    GridBagConstraints gbc = new GridBagConstraints();

    JButton reverse = new JButton("Reverse text");
    JButton send = new JButton("Send text");
    JButton clear = new JButton("Clear text");
    JTextField text = new JTextField("Test");
    JScrollPane scrollPane = new JScrollPane(text, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    //Reverse button
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.fill = gbc.HORIZONTAL;
    add(reverse, gbc);

    //send button
    gbc.gridy = 1;
    add(send, gbc);

    //clear button
    gbc.gridy = 2;
    add(clear,gbc);

    //text field
    gbc.gridy = 3;
    gbc.ipadx = 20;
    gbc.ipady = 20;
    gbc.fill = gbc.BOTH;
    add(scrollPane, gbc);
    }

}

JApplet を拡張する ServerApplet からの関連コード:

public void init(){
        //dim = getSize();
        //create the GUI in the EDT
        SwingUtilities.invokeLater(new Runnable(){
        @Override
        public void run(){
            //System.out.println(dim);
            setLayout(new BorderLayout());
            add(new ServerPanel(), BorderLayout.CENTER);

        }
    });
}

正しいコンポーネントが作成され、パネルがアプレットの中央に配置されますが、アプレット全体を埋めるように拡張されません。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

3

私がこれを見たとき:

しかし、何らかの理由で、アプレットを実行すると、コンポーネントが表示されますが、予想どおりにアプレット全体がいっぱいになりません。

GridBagLayoutと組み合わせて使用​​すると、weightxフィールドとweightyフィールドがGridBagConstraintsに設定されているかどうかを確認します。これは、デフォルト値の0のままになっている症状として、コンポーネントがすべて中央に集まっているためです。

解決策:必要な場所とタイミングでこれらのフィールドを設定します。コンポーネントがx方向に拡張する必要がある場合は、+ weightx、おそらく1.0を指定します。同様に、weightyの場合も同様です。

于 2012-12-01T23:09:05.533 に答える