【问题标题】:Add multiple jlabel on jpanel and on same line using box layout使用框布局在 jpanel 和同一行上添加多个 jlabel
【发布时间】:2014-01-02 14:07:11
【问题描述】:
想要在 jpanel 的同一行添加两个带有一些空间的 jlabel,japnel 布局设置为框布局,由于某些限制,我无法将布局更改为另一个布局,并且框布局的属性从 Y_AXIS 到 LINE_AXIS,所以请提供我有一些解决方案,所以我可以将 jlabel 放在同一行..
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
所以请让我知道上述相同的解决方案。
【问题讨论】:
标签:
java
swing
jpanel
jlabel
【解决方案1】:
使用Border 布局将您的标签包装在JPanel 中。将一个添加到 West 面板,将另一个添加到 East 面板。根据需要设置JLabels 的对齐方式。然后将JPanel 添加到您的盒子布局中。
【解决方案2】:
您似乎认为您无法更改布局,因为您正在处理 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);
【解决方案3】:
试试这个:JPanel 与 GridLayout,JLabels 左右对齐。框架是一个盒子仍然使用一个盒子。你应该感兴趣的是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();
}
}