在面板中设置标签布局
Set label layout in panels
在我的框架中,我正在添加标签,这要归功于面板中的 for。我无法解决的问题是它在同一行上添加标签,而我想在一个和另一个之间添加一个 \n 以便生成一列!我不知道该怎么做。有帮助吗?谢谢!
我认为关键在于保存 JLabel 的容器的布局。如果您为该容器提供适当的布局,例如沿 PAGE_AXIS 方向的 BoxLayout,或针对具有可变行数的一列的 GridLayout(0, 1)
,则 JLabel 会将一个堆叠在另一个之上。
例如,
import java.awt.GridLayout;
import javax.swing.*;
public class StackingLabels extends JPanel {
public static final String[] TEXTS = { "Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday" };
public StackingLabels() {
setLayout(new GridLayout(0, 1));
for (String text : TEXTS) {
add(new JLabel(text));
}
}
private static void createAndShowGui() {
StackingLabels mainPanel = new StackingLabels();
JFrame frame = new JFrame("StackingLabels");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
另一个想法是使用 JList 来显示字符串而不是堆叠的 JLabel。
在我的框架中,我正在添加标签,这要归功于面板中的 for。我无法解决的问题是它在同一行上添加标签,而我想在一个和另一个之间添加一个 \n 以便生成一列!我不知道该怎么做。有帮助吗?谢谢!
我认为关键在于保存 JLabel 的容器的布局。如果您为该容器提供适当的布局,例如沿 PAGE_AXIS 方向的 BoxLayout,或针对具有可变行数的一列的 GridLayout(0, 1)
,则 JLabel 会将一个堆叠在另一个之上。
例如,
import java.awt.GridLayout;
import javax.swing.*;
public class StackingLabels extends JPanel {
public static final String[] TEXTS = { "Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday" };
public StackingLabels() {
setLayout(new GridLayout(0, 1));
for (String text : TEXTS) {
add(new JLabel(text));
}
}
private static void createAndShowGui() {
StackingLabels mainPanel = new StackingLabels();
JFrame frame = new JFrame("StackingLabels");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
另一个想法是使用 JList 来显示字符串而不是堆叠的 JLabel。