【发布时间】:2017-05-20 12:31:27
【问题描述】:
好的,所以我想制作一个盒子布局来测试它,并在 layout help page 上指定你可以给它一个对齐,这是我尝试过的,但它似乎根本不起作用。
package gameflow;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class LoginScreen extends JFrame
{
private static final Dimension SCREENSIZE = Toolkit.getDefaultToolkit().getScreenSize();
private static final double DEFAULTHEIGHT = (SCREENSIZE.getHeight() * 80) / 100;
private static final double DEFAULTWIDTH = (SCREENSIZE.getWidth() * 80) / 100;
private static final long serialVersionUID = -7245840869407664992L;
private JTextField userfield = new JTextField(), passfield = new JTextField();
private JLabel userlabel = new JLabel("Username"), passlabel = new JLabel("Password");
private static final Dimension fieldSize = new Dimension();
public LoginScreen()
{
super("Wraith: the game");
setBounds((SCREENSIZE.width * 10) / 100, (SCREENSIZE.height * 10) / 100,(int)DEFAULTWIDTH,(int)DEFAULTHEIGHT);
fieldSize.setSize((double)this.getWidth()/2,(double)this.getHeight()/30);
userfield.setMaximumSize(fieldSize);
userfield.setForeground(new Color(1f,1f,1f));
passfield.setMaximumSize(fieldSize);
passfield.setForeground(new Color(1f,1f,1f));
userlabel.setMaximumSize(fieldSize);
passlabel.setMaximumSize(fieldSize);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
panel.setBackground(new Color(0f,0f,0f));
panel.setAlignmentX(0.5f);
panel.add(userlabel);
panel.add(userfield);
panel.add(passlabel);
panel.add(passfield);
this.add(panel, BorderLayout.CENTER);
}
}
如您所见,Panel 在具有 BorderLayout 的 JFrame 内有一个 boxlayout,组件不会对齐到中心。为什么?
【问题讨论】:
-
就像现在一样,所有组件都将具有相同的左边缘。在面板上调用 setAlignment 不会影响单个组件。
-
好吧,那我该怎么做呢?
-
我会查看 SpringLayout 而不是 BoxLayout 的表单。甚至是miglayout。 docs.oracle.com/javase/tutorial/uiswing/layout/spring.html
-
不错的尝试然而,SpringLayout 是非常低级的,因此您真的应该只将它与 GUI 构建器一起使用,而不是尝试手动编写 Spring 布局管理器。我>
标签: java swing layout-manager border-layout boxlayout