我有一个 Java Swing 水平框,其中包含标签和 JTextArea。
我试图将标签和文本在框中垂直居中,但文本显示得高于标签。
我试图在所有三个元素(框、标签、文本区域)上调用“ .setAlignmentY(Component.CENTER ”,所以我不知道为什么标签和文本不对齐
我应该如何将两者在水平框中垂直居中?
Oracle 有一个有用的教程,使用 Swing 创建 GUI。 跳过使用 NetBeans IDE 学习 Swing 部分。
我继续创建了以下 GUI。我使用了
JPanel
和
FlowLayout
。这是完整的可运行代码。 一个最小的可重现示例。
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class CenterLabel implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new CenterLabel());
}
@Override
public void run() {
JFrame frame = new JFrame("Center Label");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createTextPanel(), BorderLayout.CENTER);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel createTextPanel() {
JPanel panel = new JPanel(new FlowLayout());
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
JLabel label = new JLabel("Label:");
panel.add(label);
JTextArea textArea = new JTextArea(5, 30);
textArea.setText("text");
JScrollPane scrollPane = new JScrollPane(textArea);
panel.add(scrollPane);
return panel;
}
}