如何垂直对齐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()。