2014-02-23 43 views
1

我创建了10个JTextField,现在我想将它们对齐到右侧。我知道这可以用[nameTextField].setHorizontalAlignment(JTextField.RIGHT);来完成,但我想知道这是否可以用一行代码完成。由于JTextField.setHorizontalAlignment(JTextField.RIGHT);,不起作用,我的问题是:这可能吗?调整JTextField默认对齐

回答

0

由于JTextField.setHorizontalAlignment(JTextField.RIGHT);不起作用

让我们明白,为什么不先工作。如果我们查看JTextField的文档,我们可以看到它包含在Method Summary heading下的所有方法。它有一个方法setHorizontalAlignment(int alignment),它返回void。请注意,该方法未被声明为static(请查看它的最左边的栏位void)。由于该方法不是静态的,我们不能在类本身上调用它,而只能在类的实例上调用它。

这可能吗?

我想你这里有两种选择:

  1. 你也可以继承JTextField,将其命名为一些诸如RightAlignedTextField,并将它设置默认的对齐方式。然后,您可以使用此代替普通的ol'JTextField。或
  2. 您可以编写一个方法来调整您打算使用的所有文本字段的对齐方式。

要在例如同时使用:

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(); } 
}