Java JLabel在JPanel中的定位

Java JLabel在JPanel中的定位,java,swing,jpanel,jlabel,layout-manager,Java,Swing,Jpanel,Jlabel,Layout Manager,我编写了以下代码以建立数据库连接并添加客户端: //adding the left panel JPanel left = new JPanel(); left.setPreferredSize(new Dimension(250, 500)); left.setLayout(new BoxLayout(left, BoxLayout.Y_AXIS)); add(left); //adding the right panel JPanel right = new JPanel(); right

我编写了以下代码以建立数据库连接并添加客户端:

//adding the left panel
JPanel left = new JPanel();
left.setPreferredSize(new Dimension(250, 500));
left.setLayout(new BoxLayout(left, BoxLayout.Y_AXIS));
add(left);

//adding the right panel
JPanel right = new JPanel();
right.setPreferredSize(new Dimension(250, 500));
right.setLayout(new BoxLayout(right, BoxLayout.Y_AXIS));
add(right);

//adding the jlabel title to the left panel
JLabel leftTitle = new JLabel("Add a client");
leftTitle.setAlignmentX(CENTER_ALIGNMENT);
left.add(leftTitle);

//adding the jlabel title to the right panel
JLabel rightTitle = new JLabel("Make a reservation");
rightTitle.setAlignmentX(CENTER_ALIGNMENT);
right.add(rightTitle);

//adding the jlabel "name"
JLabel nameL = new JLabel("Name:");
left.add(nameL);
我想把这个JLabel移到这里:


我试过做
nameL.setAlignmentX(左对齐)
但它仍然不起作用

您的问题是您使用了
BoxLayout

left.setLayout(new BoxLayout(left, BoxLayout.Y_AXIS));
                   ^^^^^^^^^

您的
BoxLayout
设置为沿y轴居中对齐对象,因此无论设置多少对齐都不会改变这一点。为了解决您的问题,您需要一个不同的布局管理器,如
GroupLayout
cardloayout

我这样做了,但它给了我一个错误:线程“main”中的异常线程“AWT-EventQueue-0”中的异常java.lang.IllegalStateException:javax.swing.JLabel[,0,0,0x0,无效,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=前导,horizontalTextPosition=尾随,iconTextGap=4,labelFor=,text=添加客户端,verticalAlignment=中心,verticalTextPosition=中心]未连接到水平组您未设置水平组。您需要告诉每个组件其垂直和水平位置。
left.setLayout(new BoxLayout(left, BoxLayout.Y_AXIS));
                   ^^^^^^^^^