1

私はJavaアプレットを作成しようとしていますが、Java Webサイトを見て回っていたところ、編集した良い例を見つけました。

この例では、3つのボタンがあります。1つはヘッダーのようになり、もう1つはフッターのようになり、もう1つは本体のようになります。私の問題は、真ん中(本体)のボタンが完全に拡張しないことです。

このコードを実行すると、私が何を意味するかがわかります。

import java.awt.*;
import javax.swing.JButton;
import javax.swing.JFrame;

public class main {
    final static boolean shouldFill = true;
    final static boolean shouldWeightX = true;
    final static boolean RIGHT_TO_LEFT = false;

    public static void addComponentsToPane(Container pane) {
        if (RIGHT_TO_LEFT) {
            pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        }

        JButton button;
    pane.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    if (shouldFill) {
    //natural height, maximum width
    c.fill = GridBagConstraints.HORIZONTAL;
    }


    button = new JButton("hi");
    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.5;
    c.gridx = 1;
    c.gridy = 0;
    c.ipady = 40;
    pane.add(button, c);

    button = new JButton("Hello, i will not expand");
    c.fill = GridBagConstraints.BOTH;
    c.weighty = 1.0;   //request any extra vertical space
    c.weightx=1.0;
    c.anchor = GridBagConstraints.CENTER; //bottom of space
    c.insets = new Insets(10,0,0,0);  //top padding
    c.gridx = 1;       //aligned with button 2
    c.gridy = 1;       //third row
    pane.add(button, c);


    button = new JButton("fr");
    c.fill = GridBagConstraints.HORIZONTAL;
    c.ipady = 0;       //reset to default
    c.weighty = 1.0;   //request any extra vertical space
    c.anchor = GridBagConstraints.PAGE_END; //bottom of space
    c.insets = new Insets(10,0,0,0);  //top padding
    c.gridx = 1;       //aligned with button 2
    c.gridwidth = 2;   //2 columns wide
    c.gridy = 2;       //third row
    pane.add(button, c);
    }

    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("main");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Set up the content pane.
        addComponentsToPane(frame.getContentPane());

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

ここに画像の説明を入力してください

4

2 に答える 2

3

真ん中のボタンのせいではなく、下のボタンが拡大していないようです。下のボタンをそのように設定すると、下c.fill = GridBagConstraints.BOTH;の空きスペースが占有されます。

真ん中を大きくしたいですか?下のボタンの重さを.5に変更して、 c.weighty = .5; //request any extra vertical space
それが探しているものかどうかを確認することをお勧めします。

中央を上部と下部よりもはるかに大きくしたい場合は、グリッドスペースを増やす必要があるかもしれません。したがって、1,1,1ではなく、1,3,1などを試してください。

于 2012-04-04T21:27:10.013 に答える
2

私はJavaのWebサイトを見て回っていましたが、編集した良い例を見つけました。

だから私はあなたがGridBagLayoutを使用する必要はないと思いますか?

BorderLayoutを使用して、BorderLayout.CENTERの位置に展開可能なボタンを作成します。

http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

于 2012-04-04T21:30:02.693 に答える