我已经在Java中创建了一个密码生成器,它可以完美运行。我的功能正在运行(经过大量的眼泪,汗水和血:)),但是唯一的问题仍然是GUI的布局。
我的方法如下:
1个标题窗格(顶部/北部)
表单中央有1个窗格
1个窗格(底部/底部),用于按钮和文本字段
这是结果
如您所见,这不是我想要的。但是,如果我看一下我的代码,应该将其从上到下很好地放置。
哪里出错了?
我的代码:
构造函数(从JFrame扩展)
public PasswordGenerator(){
this.setContentPane(ContentPane());
this.setSize(500,270);
this.setResizable(true);
this.setVisible(true);
}
窗格:
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;
}
最佳答案
您忘记了在BorderLayout
上将LayoutManager
设置为ContentPane
。仅使用正确的约束是不够的。您可以为此使用ContentPane.setLayoutManager()
,也可以直接在LayoutManager
的构造函数中给出JPanel
。