gpt4 book ai didi

java - 为什么我声明的最后一个 GUI 元素填充了整个面板?

转载 作者:行者123 更新时间:2023-12-01 13:26:58 25 4
gpt4 key购买 nike

public class add extends JPanel {
private JPanel add = new JPanel();
JFrame frame;

public add(){
frame = new JFrame("Add");
frame.setBounds(550, 300, 700,500);
frame.setVisible(true);

JLabel nameLabel = new JLabel("Name");
final JTextField nameField = new JTextField();
frame.add(nameLabel);
frame.add(nameField);
nameLabel.setBounds(200, 40, 150, 30);
nameField.setBounds(350, 40, 150, 30);

...

JButton registerButton = new JButton("Salveaza");
frame.add(registerButton);
registerButton.setBounds(200,300,300, 30);
registerButton.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent ae) {

}




});


}


}

如果我删除 JButton,那么当我运行程序时,最后一个元素的标签将填充整个 JPanel。我该怎么做才能使其正常工作?

最佳答案

您正在向容器(JFrame 的 contentPane)添加组件,该容器使用 BorderLayout 作为其默认布局管理器。当您执行此操作并且不指定常量时,组件将添加 BorderLayout.CENTER,覆盖之前添加的所有组件。

  • 好的解决方案:学习和使用布局管理器,包括使用嵌套的 JPanel,每个 JPanel 都使用自己的布局管理器和组件。
  • 错误的解决方案:使用绝对定位的空布局。虽然对于新手来说,这似乎是创建复杂 GUI 的最佳方式,但您处理 Swing GUI 创建的次数越多,您就越会发现这样做会使您的 GUI 陷入困境,将其绘制在一个非常狭窄的角落,并使很难扩展或增强。只是不要这样做。

关于java - 为什么我声明的最后一个 GUI 元素填充了整个面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21764546/

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