Java 使用方框布局在jpanel和同一行上添加多个jlabel

Java 使用方框布局在jpanel和同一行上添加多个jlabel,java,swing,jpanel,jlabel,Java,Swing,Jpanel,Jlabel,想要在jpanel中添加两个在同一行上有一些空间的jlabel,japnel layout设置为box layout,由于一些限制,我无法将布局更改为另一个布局,并且box layout的属性从Y_轴更改为line_轴,因此请提供一些解决方案,以便我可以将jlabel放置在同一行上 contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); 因此,请告诉我上述问题的解决方案。用边框布局将标签包装在JPanel中。将

想要在jpanel中添加两个在同一行上有一些空间的jlabel,japnel layout设置为box layout,由于一些限制,我无法将布局更改为另一个布局,并且box layout的属性从Y_轴更改为line_轴,因此请提供一些解决方案,以便我可以将jlabel放置在同一行上

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));


因此,请告诉我上述问题的解决方案。

边框
布局将标签包装在
JPanel
中。将一个添加到西面板,另一个添加到东面板。根据需要设置标签的对齐方式。然后将
JPanel
添加到方框布局中。

边框
布局将标签包装在
JPanel
中。将一个添加到西面板,另一个添加到东面板。根据需要设置标签的对齐方式。然后将
JPanel
添加到方框布局中。

尝试以下操作:
JPanel
使用
GridLayout
,并将
JLabel
左右对齐。框架为长方体,但仍使用长方体。您应该感兴趣的是
JPanel面板
code。这就是我添加标签的地方。您所要做的就是嵌套组件和布局

import java.awt.*;
import javax.swing.*;
import javax.swing.border.LineBorder;

public class TwoLabels extends JFrame{

    public TwoLabels(){
        Box box = Box.createVerticalBox();

        JPanel panel = new JPanel(new GridLayout(1, 2));
        panel.setBorder(new LineBorder(Color.black));

        JLabel label1 = new JLabel("Hello");
        JLabel label2 = new JLabel("World");
        label1.setHorizontalAlignment(JLabel.LEADING);
        label2.setHorizontalAlignment(JLabel.TRAILING);
        panel.add(label1);
        panel.add(label2);

        box.add(new JPanel(){
            public Dimension getPreferredSize(){
                return new Dimension(300, 300);
            }
        });
        box.add(panel);

        add(box);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        new TwoLabels();

    }
}

尝试以下操作:
JPanel
使用
GridLayout
,并将
JLabel
左右对齐。框架为长方体,但仍使用长方体。您应该感兴趣的是
JPanel面板
code。这就是我添加标签的地方。您所要做的就是嵌套组件和布局

import java.awt.*;
import javax.swing.*;
import javax.swing.border.LineBorder;

public class TwoLabels extends JFrame{

    public TwoLabels(){
        Box box = Box.createVerticalBox();

        JPanel panel = new JPanel(new GridLayout(1, 2));
        panel.setBorder(new LineBorder(Color.black));

        JLabel label1 = new JLabel("Hello");
        JLabel label2 = new JLabel("World");
        label1.setHorizontalAlignment(JLabel.LEADING);
        label2.setHorizontalAlignment(JLabel.TRAILING);
        panel.add(label1);
        panel.add(label2);

        box.add(new JPanel(){
            public Dimension getPreferredSize(){
                return new Dimension(300, 300);
            }
        });
        box.add(panel);

        add(box);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        new TwoLabels();

    }
}

看起来您认为无法更改布局,因为您正在处理JFrame的内容窗格,并且不想更改窗口的其余部分

如果是这种情况,可以使用嵌套布局,方法是将两个jlabel添加到单独的JPanel(我们称之为labelPanel)并将其添加到内容窗格。它看起来像这样:

JPanel labelPanel = new JPanel();
labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.X_AXIS));
labelPanel.add(leftLabel);
labelPanel.add(Box.createGlue()); //creates space between the JLabels
labelPanel.add(rightLabel);

contentPane.add(labelPanel);

看起来您认为无法更改布局,因为您正在处理JFrame的内容窗格,并且不想更改窗口的其余部分

如果是这种情况,可以使用嵌套布局,方法是将两个jlabel添加到单独的JPanel(我们称之为labelPanel)并将其添加到内容窗格。它看起来像这样:

JPanel labelPanel = new JPanel();
labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.X_AXIS));
labelPanel.add(leftLabel);
labelPanel.add(Box.createGlue()); //creates space between the JLabels
labelPanel.add(rightLabel);

contentPane.add(labelPanel);

为什么你不能改变轴?为什么会有这些限制?没有意义为什么你不能改变轴?为什么会有这些限制?没有道理