如何在 JPanel 中左对齐 JLabel?
How do I left align a JLabel inside a JPanel?
我正在尝试为我的登录对话框构建一个状态栏,但标签没有与状态面板的左侧对齐。这是我的代码。
public class LoginDialog extends JDialog {
private static final long serialVersionUID = 1L;
protected JLabel lblTopSpace = null;
protected JPanel loginPanel = null;
protected JPanel statusPanel = null;
public LoginDialog(String title) {
super((Dialog)null);
this.setTitle(title);
Initialize();
}
protected void Initialize() {
lblTopSpace = new JLabel("Login into Bookyard");
lblTopSpace.setForeground(this.getBackground());
loginPanel = new LoginPanel();
statusPanel = new JPanel();
statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
statusPanel.setSize(this.getWidth(), 50);
JLabel lblStatus = new JLabel("Status");
lblStatus.setFont(new Font("Verdana", Font.PLAIN, 12));
lblStatus.setHorizontalAlignment(SwingConstants.LEFT);
statusPanel.add(lblStatus);
this.setLayout(new BorderLayout());
Container container = this.getContentPane();
container.add(lblTopSpace, BorderLayout.NORTH);
container.add(loginPanel, BorderLayout.CENTER);
container.add(statusPanel, BorderLayout.SOUTH);
this.pack();
}
}
这是目前的样子。
我错过了什么?
您的标签位于对话框内容窗格内的面板内。所以标签是通过其父面板的布局来管理的。但是你没有为它设置任何特定的布局,然后它是一个 FlowLayout
,你的标签然后以让文本出现所需的最小尺寸居中。然后标签在其自己的区域左对齐,但这个标签在面板中居中。
要么更改面板的布局,让标签在其中延伸(添加 BorderLayout
并将标签设置在面板的北、中或南),要么删除看起来没用的面板 (并让标签在内容窗格的南边延伸。
statusPanel.setLayout(new BorderLayout());
statusPanel.add(lblStatus,BorderLayout.SOUTH);
或
container.add(lblStatus,BorderLayout.SOUTH);
我正在尝试为我的登录对话框构建一个状态栏,但标签没有与状态面板的左侧对齐。这是我的代码。
public class LoginDialog extends JDialog {
private static final long serialVersionUID = 1L;
protected JLabel lblTopSpace = null;
protected JPanel loginPanel = null;
protected JPanel statusPanel = null;
public LoginDialog(String title) {
super((Dialog)null);
this.setTitle(title);
Initialize();
}
protected void Initialize() {
lblTopSpace = new JLabel("Login into Bookyard");
lblTopSpace.setForeground(this.getBackground());
loginPanel = new LoginPanel();
statusPanel = new JPanel();
statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
statusPanel.setSize(this.getWidth(), 50);
JLabel lblStatus = new JLabel("Status");
lblStatus.setFont(new Font("Verdana", Font.PLAIN, 12));
lblStatus.setHorizontalAlignment(SwingConstants.LEFT);
statusPanel.add(lblStatus);
this.setLayout(new BorderLayout());
Container container = this.getContentPane();
container.add(lblTopSpace, BorderLayout.NORTH);
container.add(loginPanel, BorderLayout.CENTER);
container.add(statusPanel, BorderLayout.SOUTH);
this.pack();
}
}
这是目前的样子。
我错过了什么?
您的标签位于对话框内容窗格内的面板内。所以标签是通过其父面板的布局来管理的。但是你没有为它设置任何特定的布局,然后它是一个 FlowLayout
,你的标签然后以让文本出现所需的最小尺寸居中。然后标签在其自己的区域左对齐,但这个标签在面板中居中。
要么更改面板的布局,让标签在其中延伸(添加 BorderLayout
并将标签设置在面板的北、中或南),要么删除看起来没用的面板 (并让标签在内容窗格的南边延伸。
statusPanel.setLayout(new BorderLayout());
statusPanel.add(lblStatus,BorderLayout.SOUTH);
或
container.add(lblStatus,BorderLayout.SOUTH);