1

以下の GridBagLayout を使用した簡単なテスト コードを参照してください (2 行、行 0 に 2 つのコンポーネント、行 1 に 1 つのコンポーネント)。weighty最初の行に 0.01、2 番目の行に 1 を指定しましたが、画面上の比率は 0.3 対 0.7 のように見えます。テキストエリア全体が収まるように、最初の行の高さがリサイズされているようです。

JScrollPane のスクロール バーが表示されるように、最初の行の高さを減らすにはどうすればよいですか?

public class Test {

    public static void main(String... args) {
        String text = "text\n\n\n\n\n\n\n\ntext";
        JFrame frame = new JFrame();
        JTextArea area;
        JScrollPane pane;

        JPanel desktop = new JPanel(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;

        c.gridx = 0;
        c.gridy = 0;
        c.weightx = 0.25;
        c.weighty = 0.05;
        area = new JTextArea(text);
        area.setBackground(Color.RED);
        pane = new JScrollPane(area);
        desktop.add(pane, c);

        c.gridx = 1;
        c.gridy = 0;
        c.weightx = 0.75;
        c.weighty = 0.05;
        area = new JTextArea(text);
        area.setBackground(Color.BLUE);
        pane = new JScrollPane(area);
        desktop.add(pane, c);

        c.fill = GridBagConstraints.BOTH;
        c.gridx = 0;
        c.gridy = 1;
        c.weightx = 0;
        c.weighty = 1;
        c.gridwidth = 2;
        area = new JTextArea(text);
        area.setBackground(Color.GREEN);
        pane = new JScrollPane(area);
        desktop.add(pane, c);

        frame.setContentPane(desktop);
        frame.setPreferredSize(new Dimension(800, 600));
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setVisible(true);

    }
}
4

2 に答える 2

3

weight - 余分な垂直方向のスペースをどのように配分するかを指定します。したがって、使用可能なスペースが優先サイズの合計よりも大きい場合、余分なピクセルは重み値に従って分配されます。

于 2012-04-26T12:46:55.440 に答える
3

JTextArea の行数を設定して、textarea と scrollpane の preferredSize がその行数に調整されるようにします。テキストエリアのテキストに過剰な行数がある場合、スクロールバーが表示されます。

于 2012-04-26T12:47:48.590 に答える