Java 使Swing组件垂直对齐

Java 使Swing组件垂直对齐,java,swing,components,alignment,Java,Swing,Components,Alignment,基本上,我需要得到一个JLabel组件,以便与其父JPanel的顶部对齐 这是我的密码: public static JPanel createBoldLabelPanel(String labelText, Component c, Font font, Color c1){ c.setFont(new Font(font.getName(), Font.PLAIN, font.getSize())); c.setBackground(c1); JPanel jp =

基本上,我需要得到一个JLabel组件,以便与其父JPanel的顶部对齐

这是我的密码:

public static JPanel createBoldLabelPanel(String labelText, Component c, Font font, Color c1){
    c.setFont(new Font(font.getName(), Font.PLAIN, font.getSize()));
    c.setBackground(c1);
    JPanel jp = new JPanel();
    if(!labelText.isEmpty()){
        jp.setLayout(new BoxLayout(jp, BoxLayout.LINE_AXIS));
        JLabel label = new JLabel(labelText);
        label.setFont(new Font(font.getFontName(), Font.BOLD, font.getSize()));
        label.setBackground(c1);
        label.setAlignmentY(Component.TOP_ALIGNMENT);
        jp.add(label);
    }
    jp.add(c);
    jp.setBackground(c1);
    return jp;
}
这是我的测试代码:

public static void main(String[] args){
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    JTextArea jta = new JTextArea("Sed ut perspiciatis, unde " +
            "omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem " +
            "aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, " +
            "explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia " +
            "consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, " +
            "qui dolorem ipsum, quia dolor sit amet, consectetur, adipisci[ng] velit, sed quia non numquam [do] " +
            "eius modi tempora inci[di]dunt, ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim " +
            "ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex " +
            "ea commodi consequatur? Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, " +
            "quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?");
    jta.setEditable(false);
    jta.setLineWrap(true);
    jta.setWrapStyleWord(true);
    frame.add(DisplayPanel.createBoldLabelPanel("Test:", jta, new Font(Font.SERIF, Font.PLAIN, 14), Color.GRAY));
    frame.setSize(400, 400);
    frame.setVisible(true);
}
如果你运行它,我想要的应该是清楚的,如果它还没有。谢谢


还可以设置文本区域的aligment属性:

jta.setAlignmentY(Component.TOP_ALIGNMENT);

然后两者都将与面板内的顶部对齐。

还可以设置文本区域的对齐属性:

jta.setAlignmentY(Component.TOP_ALIGNMENT);

然后两者都将与面板内的顶部对齐。

或将LayoutManager更改为BorderLaoyut

public static JPanel createBoldLabelPanel(String labelText, Component c, Font font, Color c1) {
    c.setFont(new Font(font.getName(), Font.PLAIN, font.getSize()));
    c.setBackground(c1);
    JPanel jp = new JPanel();
    if (!labelText.isEmpty()) {
        //jp.setLayout(new BoxLayout(jp, BoxLayout.LINE_AXIS));
        jp.setLayout( new BorderLayout());
        JLabel label = new JLabel(labelText);
        label.setFont(new Font(font.getFontName(), Font.BOLD, font.getSize()));
        label.setBackground(c1);
        label.setAlignmentY(Component.TOP_ALIGNMENT);
        jp.add(label, BorderLayout.NORTH);
    }
    jp.add(c);
    jp.setBackground(c1);
    return jp;
}

或者将LayoutManager更改为BorderLaoyut

public static JPanel createBoldLabelPanel(String labelText, Component c, Font font, Color c1) {
    c.setFont(new Font(font.getName(), Font.PLAIN, font.getSize()));
    c.setBackground(c1);
    JPanel jp = new JPanel();
    if (!labelText.isEmpty()) {
        //jp.setLayout(new BoxLayout(jp, BoxLayout.LINE_AXIS));
        jp.setLayout( new BorderLayout());
        JLabel label = new JLabel(labelText);
        label.setFont(new Font(font.getFontName(), Font.BOLD, font.getSize()));
        label.setBackground(c1);
        label.setAlignmentY(Component.TOP_ALIGNMENT);
        jp.add(label, BorderLayout.NORTH);
    }
    jp.add(c);
    jp.setBackground(c1);
    return jp;
}

那有什么问题?我不想运行您的代码并猜测问题出在哪里。正如我在第一句中所说,“基本上,我需要让一个JLabel组件与它的父JPanel顶部对齐。”对,但在您添加该图片之前,没有说明您的代码有什么问题。那么问题出在哪里?我不想运行您的代码并猜测问题所在。正如我在第一句中所说,“基本上,我需要让一个JLabel组件与其父JPanel的顶部对齐。”是的,但在添加该图片之前,没有说明代码的问题所在。+1,这是正确的@MirroredFate,很抱歉我之前提供的代码没有将组件与顶部对齐:/+1、这是对的@MirroredFate,很抱歉我之前提供的代码没有将组件与顶部对齐:/