Java JLabel未与GridLayout正确对齐

Java JLabel未与GridLayout正确对齐,java,swing,jlabel,grid-layout,Java,Swing,Jlabel,Grid Layout,标签未与中心布局的左侧对齐。如果GridLayout不存在,则它会正确移动。有没有办法将JLabel移到最左边 我尝试过setHorizontalAlignment和setAlignmentX,但都不起作用 import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; im

标签未与中心布局的左侧对齐。如果
GridLayout
不存在,则它会正确移动。有没有办法将JLabel移到最左边

我尝试过setHorizontalAlignment和setAlignmentX,但都不起作用

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class asd {
    public static void main(String[] args){
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        JLabel lab = new JLabel("LABEL",SwingConstants.LEFT);
        //lab.setHorizontalAlignment(SwingConstants.CENTER);
        GridLayout grid = new GridLayout(3,3,2,1);
        JPanel yourGrid = new JPanel(grid);
        panel.add(lab);
        for(int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                JButton but = new JButton();
                yourGrid.add(but);
            }
        }
        panel.add(yourGrid);
        frame.getContentPane().add(BorderLayout.CENTER,panel);
        frame.setVisible(true);
        frame.pack();
    }
}
导入java.awt.BorderLayout;
导入java.awt.GridLayout;
导入javax.swing.BoxLayout;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.SwingConstants;
公共级自闭症{
公共静态void main(字符串[]args){
JFrame=新JFrame();
JPanel面板=新的JPanel();
panel.setLayout(新的BoxLayout(panel,BoxLayout.Y_轴));
JLabel lab=新的JLabel(“标签”,SwingConstants.LEFT);
//实验室设置水平对中(SwingConstants.CENTER);
GridLayout grid=新的GridLayout(3,3,2,1);
JPanel yourGrid=新的JPanel(网格);
面板。添加(实验室);

对于(int i=0;i当使用BoxLayout时,必须为其中的任何元素设置对齐方式

如下示例所示:

修复对齐问题

您必须设置实验室和网格的对齐方式

lab.setHorizontalAlignment(SwingConstants.LEFT);
yourGrid.setAlignmentX(Component.LEFT_ALIGNMENT);

yourGrid.setHorizontalAlignment(SwingConstants.LEFT);是非法的。解决了,我前面没有编译器来测试代码atm,ty!:做了更多的事情!如果有两个
JLabel
s,我需要将一个放在最左边,另一个放在最右边怎么对齐
JPanel
呢(面板,BoxLayout.LINE_轴);
然后添加(标签1);添加(Box.createHoritzonalGlue());添加(标签2);