gpt4 book ai didi

java - 当 textarea 与其他组件一起使用时,为什么 Java pack 无法正确调整框架大小?

转载 作者:行者123 更新时间:2023-12-01 17:16:25 24 4
gpt4 key购买 nike

我正在使用 GridLayout 创建一个 GUI 来排列使用 FlowLayout 的多个面板。我使用 pack 来确定框架的大小。如果我只有一个 TextArea 那么它的大小正确。如果我只有其他组件,它的大小正确。但是,如果我在面板下方的代码中同时使用 p1 和 p2,按钮的大小将不正确。我正在使用的测试代码如下。如果我只使用 p1 或 p2,它的大小会正确,但不能同时使用:这是我得到的图像。我不希望按钮和文本区域之间有多余的空间。 如果我单独做文本区域,它的大小会正确。:enter image description here

public class GUIPractice extends JFrame
{
//declare GUI objects
JPanel panel;
JPanel p1, p2;
JButton btnAdd, btnShow;
JScrollPane js;
JTextArea taOutput;

//constructor
public GUIPractice()
{
//give frame a title
setTitle("GUI Practice");
panel =new JPanel(new GridLayout(0, 1));
btnAdd = new JButton("Add");
btnShow = new JButton("Show");
taOutput = new JTextArea(10, 20);
js = new JScrollPane(taOutput, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

p1 = new JPanel();
p1.add(btnAdd);
p1.add(btnShow);

p2 = new JPanel();
p2.add(js);

panel.add(p1);
panel.add(p2);

//add the panel to the frame
add(panel);
}

public static void main(String[] args)
{
GUIPractice frame = new GUIPractice();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

}

最佳答案

尺寸正确。 GridLayout 意味着所有单元格的大小都相同。由于文本区域比按钮大,因此您会在包含按钮的面板中看到额外的空间。

我建议您只使用框架的默认BorderLayout

不需要使用 GridLayout 的“面板”。

您只需使用:

add(p1, BorderLayout.PAGE_START);
add(p2, BorderLayout.CENTER);

现在 p1 和 p2 将是正确的高度。

此外,确实不需要“p2”。您可以直接将滚动 Pane 添加到框架中。

关于java - 当 textarea 与其他组件一起使用时,为什么 Java pack 无法正确调整框架大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61377401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com