您的位置:首页 > 其它

Swing系列-组件对齐方式的学习

2013-10-08 21:20 316 查看
-----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)

下面代码展示了这个问题:

view plaincopy to clipboardprint?

JPanel panel = new JPanel();

panel .setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

JButton button = new JButton("button");

JButton button2 = new JButton("button2");

JButton button3 = new JButton("button3");

add(button);

add(button2);

add(button3);

button.setAlignmentX(Component.LEFT_ALIGNMENT);

button2.setAlignmentX(Component.RIGHT_ALIGNMENT);

button3.setAlignmentX(Component.LEFT_ALIGNMENT);

JPanel panel = new JPanel();

panel .setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

JButton button = new JButton("button");

JButton button2 = new JButton("button2");

JButton button3 = new JButton("button3");

add(button);

add(button2);

add(button3);

button.setAlignmentX(Component.LEFT_ALIGNMENT);

button2.setAlignmentX(Component.RIGHT_ALIGNMENT);

button3.setAlignmentX(Component.LEFT_ALIGNMENT);

通过上面代码,可以看到BoxLayout布局下,调用组件的setAlignmentX后的对齐效果

查看API文档可以发现,可作为容器的组件,均由布局管理来设置对齐方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: