[英]BorderLayout in Swing Java not working correctly
我已经在Java中创建了一个密码生成器,它可以完美运行。 我的功能正在运行(经过大量的眼泪,汗水和血:)),但是唯一的问题仍然是GUI的布局。
我的方法如下:
这是结果
如您所见,这不是我想要的。 但是,如果我看一下我的代码,应该将其从头到尾放置得很好。
哪里出错了?
我的代码:
构造函数 (从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;
}
您忘记在ContentPane
上将BorderLayout
设置为LayoutManager
。 仅使用正确的约束是不够的。 您可以为此使用ContentPane.setLayoutManager()
,也可以直接在JPanel
的构造函数中提供LayoutManager
。
JPanel的默认布局管理器是FlowLayout Manager。 要使用BorederLayout,您需要进行专门设置:
private JPanel ContentPane()
{
JPanel ContentPane = new JPanel();
//////////////////////////////////////////////
ContentPane.setLayout(new BorderLayout());
////////////////////////////////////////////
ContentPane.add(getTopPane(), BorderLayout.NORTH);
ContentPane.add(getCenterPane(),BorderLayout.CENTER);
ContentPane.add(getSouthPane(),BorderLayout.SOUTH);
return ContentPane;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.