如何垂直对齐JLabel-JTextField对

我所说的JLabel-JTextField对是一个JLabel组件,后跟一个JTextField组件,例如“参数1:—–”,其中“—–”表示空白的JTextField。

问题是,由于参数名称的长度不同,JLabel的宽度会有所不同,因此JTextField的起点不会垂直对齐。

有没有办法将JLabel垂直对齐到右边,以便后面的JTextField的开头会对齐? 谢谢。

有没有办法将JLabel垂直对齐到右边,以便后面的JTextField的开头会对齐?

1.6+, GroupLayout 。 来自JavaDocs的EG:

在此处输入图像描述

使用将文本推送到RHS的标签对齐方式。


另请参阅MCVE的答案 。

您没有指定使用哪种布局,因此实现GridBagLayout的良好布局。 oracle网站上的演示非常棒。

还有一个简短的例子:

 JPanel panel = new JPanel(); panel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; panel.add(new JLabel("Label 1:"), c); c.gridx = 1; c.gridy = 0; panel.add(new JTextField("TextField 1"), c); c.gridx = 0; c.gridy = 1; panel.add(new JLabel("Label 2:"), c); c.gridx = 1; c.gridy = 1; panel.add(new JTextField("TextField 2"), c); 

要么

有可能在JTextComponents中只对齐文本

 JLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 

这是DesignGridLayout的完美用例:

 DesignGridLayout layout = new DesignGridLayout(contentPane); layout.labelAlignment(LabelAlignment.RIGHT); layout.row().grid(label1).add(field1); layout.row().grid(label2).add(field2); ... 

我会建议GridLayout布局管理器。 它提供了最简单的解决方案,可显示标签和文本框控件的成对可视化。 因此,您只需在实例化时定义行数和列数,添加的控件将由管理器处理。

我见过的好解决方案包括使用GridBagLayout(如上所述)或MiGLayout ,但由于后者不是标准Java的一部分,因此必须在使用前下载并放置在类路径中。 MiGLayout并不难以使用。

父组件的LayoutManager具有定位所包含元素的责任。 也许你需要设置一个XYLayout。

查看父类的setLayoutManager()。