Java 使用方框布局在jpanel和同一行上添加多个jlabel
想要在jpanel中添加两个在同一行上有一些空间的jlabel,japnel layout设置为box layout,由于一些限制,我无法将布局更改为另一个布局,并且box layout的属性从Y_轴更改为line_轴,因此请提供一些解决方案,以便我可以将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中。将
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);
为什么你不能改变轴?为什么会有这些限制?没有意义为什么你不能改变轴?为什么会有这些限制?没有道理