请参阅下面一个使用GridBagLayout的简单测试代码(第2行有2行,第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);
}
}
答案 0 :(得分:3)
weight - 指定如何分配额外的垂直空间。因此,如果可用空间大于首选大小的总和,则根据权重值分配额外的像素。
答案 1 :(得分:3)
设置JTextArea上的行数,以便textarea和scrollpane的preferredSize将调整为该行数。如果textarea文本中的行数过多,则会显示滚动条。