私はそれをテストするためにボックスレイアウトを作っていましたが、layout help pageには、整列を与えることができますが、これは私が試したものですが、全く動作しないようです。Boxlayoutは整列していません
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内のボックスレイアウトを持ち、コンポーネントは中央に配置されません。どうして?
今のように、すべてのコンポーネントの左端が同じになります。パネル上でsetAlignmentを呼び出すことは個々のコンポーネントに影響を与えません。 – MeBigFatGuy
さて、どうしたらいいですか? – Delupara
私は、フォームのBoxLayout上のSpringLayoutを見ていきたいと思います。またはmiglayout。 https://docs.oracle.com/javase/tutorial/uiswing/layout/spring。htmlの – MeBigFatGuy