的GridBagLayout与JScrollPane的:如何降低行高?(GridBagLayout

2019-09-16 18:44发布

见下文使用的GridBagLayout一个简单的测试码(2行,在第0行2成分,在第1行1个成分)。 虽然我已指定weighty为0.01对第一行和1对第二行中,在屏幕上比看起来更像0.3与0.7。 看来,第一行的高度调整,使整个textarea的在它适合。

我怎样才能减少第一行的高度,从而使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);

    }
}

Answer 1:

坐落在JTextArea中的行数,使textarea的滚动窗格和的首选大小将调整为行的数量。 但如果是在textarea的文本行的数量过多,滚动条就会出现。



Answer 2:

重 - 指定如何分布额外的垂直空间。 因此,如果可用的空间比优选尺寸的总和更大然后额外pixes根据权重值分配。



文章来源: GridBagLayout & JScrollPane: how to reduce row height?