仿XP画图板开发-解决布局问题

在我第一个画图版本中,我将所有组件的布局方式设置为 NULL布局 ,然后通过屏幕相对坐标来设置组件位置和大小,而这样布局有一个问题就是当 窗口大小改变时,组件的位置和大小不会相应改变,而对于画图板这个项目来说,不能改变窗口大小无疑是不合理的。所以我重写了画图板,改变了起布局方式。


仿XP画图板开发-解决布局问题
 

大体布局介绍如下

 

窗口布局为 BorderLayout布局 在其西边是坐标工具栏,中间是右边面板,绘图面板在右边面板上,南边是个底部面板, 而在用 BorderLayout布局需要注意的是,在设置组件的setPreferredSize 时候在WEST 和EAST方向的组件的height是不起作用的,在NORTH和SOUTH方向的组件的Width参数是不起作用的,(用BorderLayout布局时 设置大小用setPreferredSize方法,一般不用setSize方法)。

左边的工具栏使用的是流式布局即FlowLayout布局,用setPreferredSize 方法设置其中组件大小时,Height和Width都要设置。需要注意的是流式布局的构造方法new FlowLayout(a,x,y),x,y代表分别是组件横间距和纵间距,a代表的是 对齐方式(也可以用layout.setAlignment(FlowLayout.xxxx)设置):默认的是居中对齐的 5 5间距的布局

默认


仿XP画图板开发-解决布局问题
 

FlowLayout.Left,其对应的整数值为0


仿XP画图板开发-解决布局问题
 

FlowLayout.Center=1


仿XP画图板开发-解决布局问题
 

FlowLayout.Right=2


仿XP画图板开发-解决布局问题
 

FlowLayout.LEADING=3


仿XP画图板开发-解决布局问题
 

FlowLayout.TRAILING=4


仿XP画图板开发-解决布局问题
 

在上几幅图中看来 第三个参数设置为 FlowLayout.LEADING(3)与和 FlowLayout.LEFT(0)是一样的,于是百度了下

FlowLayout.LEADING指示每一行组件都应该与容器方向的开始边对齐,
例如,对于从左到右的方向,则与左边对齐。
若父容器设置的是从右开始,则组件从右开始对齐

FlowLayout.Right(2)和 FlowLayout.TRAILING(结束边)(4)区别 也是一个道理

至于父容器怎么设置从哪边开始 就不知道了 知道的大神可以指导下

你可能感兴趣的:(画图板)