如何将JLabel和JTextArea放在水平框中居中?

问题描述 投票:0回答:1

我有一个 Java Swing 水平框,其中包含标签和 JTextArea。

我试图将标签和文本在框中垂直居中,但文本显示得高于标签。

我试图在所有三个元素(框、标签、文本区域)上调用“ .setAlignmentY(Component.CENTER ”,所以我不知道为什么标签和文本不对齐

我应该如何将两者在水平框中垂直居中?

java swing user-interface
1个回答
0
投票

Oracle 有一个有用的教程,使用 Swing 创建 GUI。 跳过使用 NetBeans IDE 学习 Swing 部分。

我继续创建了以下 GUI。

enter image description here

我使用了

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; } }
    
© www.soinside.com 2019 - 2024. All rights reserved.