1. 程式人生 > >[Java] Swing系列-元件對齊方式的學習

[Java] Swing系列-元件對齊方式的學習

  這次記錄一下Swing元件的對齊問題。

-----JPanel-----
  首先從Jpanel說起,很多時候,需要在JPanel上使元件遵循某種對齊方式:
 (注,JDK1.5以後版本,對frame呼叫setLayout會預設在frame的content面板上執行)
  方法:
   使用佈局管理器:FlowLayout
  程式碼:(右對齊)
   panel.setLayout(new FlowLayout(FlowLayout.RIGHT));
 

----JLabel-------
  偶爾,設計Label的時候也會需要讓Label上的文字實現某種對齊方式:
  方法:
    setHorizontalAlignment()
  程式碼:(右對齊)
    label.setHorizontalAlignment(JLabel.RIGHT);
 
----JTextField-----
  JTextField的右對齊很常用了,比如寫一個計算器程式的輸入框。
  方法:
   setHorizontalAlignment()
  程式碼:
   field.setHorizontalAlignment(JTextField.RIGHT);

----JFormattedTextField -----
  格式化文字框也常常使用。
  方法:(與JTextField相同)
    setHorizontalAlignment() 
  程式碼:
    field.setHorizontalAlignment(JTextField.RIGHT);

----JPasswordField -----
  密碼框……似乎從右邊輸入是沒有必要的。
  方法:(與JTextField相同)
    setHorizontalAlignment()
  程式碼:
    field.setHorizontalAlignment(JTextField.RIGHT);

----JTexArea-----
  這是為了實現從Area的右邊開始輸入:
  方法:
    setComponentOrientation()
  程式碼:(從右向左輸入)
    area.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
 

  關於setComponentOrientation():
  從Component繼承而來,API這樣描述:

  Sets the language-sensitive orientation that is to be used to order the elements or text within this component. Language-sensitive LayoutManager and Component subclasses will use this property to determine how to lay out and draw components.

 
---JEditorPane---
  這個我沒嘗試出右邊輸入的方法
 
---JTextPane----
  方法:
    setComponentOrientation()
  程式碼:(從右向左輸入)
    textPane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
 
 
關於setAlignmentY的使用
  這個方法的確是用來設定對齊的,但對JPanl使用setAlignmentY(水平對齊)是不會另panel上元件改變對齊方式的,Api文件描述很簡單:Sets the the horizontal alignment.
  其實該方法是用來設定元件自身的對齊方式,並且要求必須在佈局方式為BoxLayout.X_AXIS
 (同理,setAlignmentX對應於BoxLayout.Y_AXIS)
  下面程式碼展示了這個問題:
 

  通過上面程式碼,可以看到BoxLayout佈局下,呼叫元件的setAlignmentX後的對齊效果

  檢視API文件可以發現,可作為容器的元件,均由佈局管理來設定對齊方式。