2014-02-23 42 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(); } 
}