提问者:小点点

GridBagLayout 中组件的大小不正确


我正在用Java制作一个简单的界面。我想在上面有一个 JButton,其设置大小为 200*20,并在它的正下方有一个封装 JTextArea 的 JScrollPane。此字段的大小应为放置该字段的 JPanel 的剩余宽度和高度(但最小值为 640*480),并且在放大/缩小窗口时必须调整大小(直到其最小大小)。

我试着用GridBagLayout做这个,但似乎不起作用。有人知道我该怎么解决吗?

    //Initialize components
    Dimension minSize = new Dimension(640, 480);
    info = new JTextArea("hello");
    info.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(info);
    scrollPane.setMinimumSize(minSize);
    JButton update = new JButton("update");
    JPanel jp = new JPanel();
    jp.setLayout(new GridBagLayout());
    GridBagConstraints grid = new GridBagConstraints();

    //add components
    grid.fill = GridBagConstraints.NONE;
    grid.anchor = GridBagConstraints.NORTHWEST;
    grid.gridheight = 1;
    grid.gridwidth = 1;
    grid.weighty = 1.0;
    grid.weightx = 1.0;
    grid.gridx = 0;
    grid.gridy = 0;

    jp.add(update, grid);

    grid.fill = GridBagConstraints.BOTH;
    grid.gridx = 0;
    grid.gridy = 1;
    grid.weighty = 15;
    grid.gridheight = 15;
    grid.gridwidth = 15;

    jp.add(scrollPane, grid);

    this.add(jp,BorderLayout.NORTH);

我该怎么做呢?


共1个答案

匿名用户

this.add(jp,边界布局.CENTER)

按照文件中的规定:

组件根据其首选大小和容器大小的限制进行布局。南北分量可以水平拉伸;东分量和西分量可以垂直拉伸;中心组件可以水平和垂直拉伸,以填充任何剩余的空间。