gpt4 book ai didi

java - Swing Java 中的 BorderLayout 无法正常工作

转载 作者:行者123 更新时间:2023-12-01 16:52:57 26 4
gpt4 key购买 nike

我用 Java 创建了一个完美运行的密码生成器。我的功能正在运行(经过大量的泪水、汗水和鲜血:)),但唯一剩下的问题是我的 GUI 的布局。

我的方法如下:

  • 标题有 1 个 Pane (顶部/北部)
  • 表单中心有 1 个 Pane
  • 1 个 Pane (底部/南侧)用于按钮和文本字段

这就是结果

enter image description here

如你所见,这不是我想要的。但如果我看一下我的代码,它应该从上到下放置得很好。

哪里出了问题?

我的代码:

构造函数(从 JFrame 扩展)

public PasswordGenerator(){
this.setContentPane(ContentPane());
this.setSize(500,270);
this.setResizable(true);
this.setVisible(true);
}

Pane :

private JPanel ContentPane()
{
JPanel ContentPane = new JPanel();
ContentPane.add(getTopPane(), BorderLayout.NORTH);
ContentPane.add(getCenterPane(),BorderLayout.CENTER);
ContentPane.add(getSouthPane(),BorderLayout.EAST);
return ContentPane;
}

private JPanel getTopPane(){
JPanel TopPane = new JPanel();
JLabel intro = new JLabel("Password generator V1.0");
intro.setFont(new Font("TimesRoman",Font.BOLD,20));
TopPane.setLayout(new GridLayout(1,1));
TopPane.add(intro);
return TopPane;
}

private JPanel getCenterPane(){
JPanel CenterPane = new JPanel();

CenterPane.add(aantalChars);
CenterPane.setLayout(new GridLayout(6,3));
//8,2
hidden.setVisible(false);
hiddenL.setVisible(false);
CenterPane.add(aantalCharsLabel);
CenterPane.add(hidden);
CenterPane.add(hidden);
CenterPane.add(hiddenL);
CenterPane.add(lowerCase);
CenterPane.add(lowerCaseLabel);
CenterPane.add(upperCase);
CenterPane.add(upperCaseLabel);
CenterPane.add(numberCase);
CenterPane.add(numberCaseLabel);
CenterPane.add(symbolCase);
CenterPane.add(symbolCaseLabel);


return CenterPane;
}

最佳答案

您忘记将 ContentPane 上的 BorderLayout 设置为 LayoutManager。仅使用正确的约束是不够的。您可以使用 ContentPane.setLayoutManager() 来实现此目的,也可以直接在 JPanel 的构造函数中指定 LayoutManager

关于java - Swing Java 中的 BorderLayout 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448294/

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