Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GridBagLayout中组件的大小不正确_Java_Swing_Resize_Gridbaglayout_Preferredsize - Fatal编程技术网

Java GridBagLayout中组件的大小不正确

Java GridBagLayout中组件的大小不正确,java,swing,resize,gridbaglayout,preferredsize,Java,Swing,Resize,Gridbaglayout,Preferredsize,我正在用Java制作一个简单的接口。我想在顶部有一个设置大小为200*20的JButton,并在其正下方有一个封装JTextArea的JScrollPane。此字段的大小应为其所在JPanel的剩余宽度和高度(但最小值为640*480),并且在使窗口变大/变小时必须调整大小(直到其最小大小) 我试着用GridBagLayout制作这个,但它似乎不起作用。有人知道我怎么解决这个问题吗 //Initialize components Dimension minSize = new D

我正在用Java制作一个简单的接口。我想在顶部有一个设置大小为200*20的JButton,并在其正下方有一个封装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);
这就是它现在的样子:正如我之前描述的,这不是我想要的;文本区域需要填充整个屏幕(因此需要更高)

我该怎么做?

this.add(jp,BorderLayout.CENTER)

按照规定:

部件按照其首选尺寸和尺寸进行布置 容器大小的约束。南北两部分 可以水平拉伸;东部和西部组件可能是 垂直拉伸中心组件可能会拉伸两个方向 水平和垂直填充剩余空间

this.add(jp,BorderLayout.CENTER)

按照规定:

部件按照其首选尺寸和尺寸进行布置 容器大小的约束。南北两部分 可以水平拉伸;东部和西部组件可能是 垂直拉伸中心组件可能会拉伸两个方向 水平和垂直填充剩余空间