[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文件可以發現,可作為容器的元件,均由佈局管理來設定對齊方式。