Java 调整JTextField默认对齐方式
我创建了10个JTextFields,现在我想将它们向右对齐。我知道这可以通过Java 调整JTextField默认对齐方式,java,alignment,jtextfield,Java,Alignment,Jtextfield,我创建了10个JTextFields,现在我想将它们向右对齐。我知道这可以通过[nameTextField].setHorizontalAlignment(JTextField.RIGHT)实现,但我想知道这是否可以用一行代码完成。因为JTextField.setHorizontalAlignment(JTextField.RIGHT),不起作用,我的问题是:这可能吗 因为JTextField.setHorizontalAlignment(JTextField.RIGHT)不起作用 让我们先了解
[nameTextField].setHorizontalAlignment(JTextField.RIGHT)实现代码>,但我想知道这是否可以用一行代码完成。因为JTextField.setHorizontalAlignment(JTextField.RIGHT)代码>,不起作用,我的问题是:这可能吗
因为JTextField.setHorizontalAlignment(JTextField.RIGHT)代码>不起作用
让我们先了解为什么这不起作用。如果我们查看JTextField
的文档,我们可以看到它在下包含的所有方法。它有一个方法setHorizontalAlignment(int-alignment)
,返回void
。请注意,该方法未声明为静态
(请查看最左边的列,其中显示的是void
)。由于该方法不是静态的,我们不能对类本身调用它,而只能对类的实例调用它
这可能吗
我认为你有两个选择:
您可以子类化JTextField
,将其命名为RightAlignedTextField
,并使其在默认情况下设置对齐方式。然后,您可以使用它来代替普通的ol'JTextField
。或
您可以编写一个方法来调整计划使用的所有文本字段的对齐方式
要在示例中同时使用这两者,请执行以下操作:
import javax.swing.*;
import java.awt.*;
class RightAlignedTextField extends JTextField {
public RightAlignedTextField(int columns) {
super(columns);
this.setHorizontalAlignment(RIGHT);
}
}
public class Q21970358 extends JFrame {
private final static long serialVersionUID = 0L;
private JTextField t1 = new JTextField(30);
private JTextField t2 = new JTextField(30);
private JTextField t3 = new JTextField(30);
private JTextField t4 = new JTextField(30);
private JTextField t5 = new JTextField(30);
private JTextField t6 = new RightAlignedTextField(30);
public Q21970358() {
super("Stack Overflow Q21970358");
this.addTextFields();
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setMinimumSize(new Dimension(400, 300));
}
public void alignAllRight(JTextField... fields) {
for (JTextField t : fields) {
t.setHorizontalAlignment(JTextField.RIGHT);
}
}
public void addTextFields() {
// Set all to align right
// This is the part you're looking for
// (2)
this.alignAllRight(t1, t2, t3, t4, t5);
JPanel panel = new JPanel();
panel.add(t1);
panel.add(t2);
panel.add(t3);
panel.add(t4);
panel.add(t5);
panel.add(t6); // (1)
this.add(panel);
}
public static void main(String[] args) { new Q21970358(); }
}