我所说的 JLabel-JTextField 对是一个 JLabel 组件,后跟一个 JTextField 组件,例如,“参数 1:-----”,其中“-----”表示一个空白的 JTextField。
问题是,由于参数名称的长度不同,JLabels 的宽度也会发生变化,因此 JTextFields 的开头没有垂直对齐。
有没有办法将 JLabels 垂直对齐到它们的右边,以便后面的 JTextFields 的开头对齐?谢谢。
我所说的 JLabel-JTextField 对是一个 JLabel 组件,后跟一个 JTextField 组件,例如,“参数 1:-----”,其中“-----”表示一个空白的 JTextField。
问题是,由于参数名称的长度不同,JLabels 的宽度也会发生变化,因此 JTextFields 的开头没有垂直对齐。
有没有办法将 JLabels 垂直对齐到它们的右边,以便后面的 JTextFields 的开头对齐?谢谢。
您没有指定使用哪种布局,因此实现该布局的好方法是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()。
1.6+,
GroupLayout
。来自 JavaDocs 的 EG:使用将文本推送到 RHS 的标签对齐方式。
另请参阅此答案以了解 MCVE。