想要在jpanel上添加两个jlabel同一行的一些空格,将japnel布局设置为框布局,由于一些约束,我无法将布局更改为另一个以及从Y_AXIS到LINE_AXIS的框布局属性,所以请提供我有一些解决方案,所以我可以把jlabel放在同一条线上..
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
所以请让我知道上面提到的解决方案。
答案 0 :(得分:2)
使用JPanel
布局将标签包裹在Border
中。在West面板中添加一个,在East面板中添加另一个。根据需要设置JLabels
的对齐方式。然后将JPanel
添加到您的包装盒布局中。
答案 1 :(得分:1)
尝试这样做:JPanel
GridLayout
,JLabel
左右对齐。框架是一个盒子仍然使用一个盒子。您应该感兴趣的是JPanel panel
代码。这就是我添加标签的地方。您所要做的就是嵌套组件和布局
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();
}
}
答案 2 :(得分:1)
看起来您认为无法更改布局,因为您正在处理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);