BorderLayout中的North区用FlowLayout,想让North区高度根据窗口宽度自动变化,但是做出的效果如下
折腾了一会儿找到办法了,效果如下:
-----------------------------实现方法-------------------------------------
1.要想改变North区的高度,要用到North区panel对象的setPreferredSize()方法
2.通过读按钮8的Y坐标发现按钮8实际上已经自动切换到第二排,只是显示不出来,通过“按钮8”的getY()方法获取Y坐标再加上按钮8的高度和组件间距,就是North区实际上应该有的高度
3.通过主窗口Frame对象的addComponentListener()方法增加组件大小变化监听。在拖动改变窗口大小时动态改变North区的高度
4.核心代码如下:
f.addComponentListener(new ComponentAdapter(){
//窗口大小改变时调用此方法
public void componentResized(ComponentEvent e) {
//获取panel1的最后一个component
Component lastComponent=panel1.getComponent(panel1.getComponentCount()-1);
//获取主窗口的宽度
int p1_width=(int) f.getSize().getWidth();