请教:BorderLayout的NORTH、CENTER、SOUTH三部分的宽度可不可以自己设定或者给其中一部分指定一个最大宽度?

nt941 2003-08-25 11:46:54
最好使按比例设定,如果不行的话能设定其中一部分占固定的象素数也行。

我想实现的效果使在BorderLayout.NORTH处放一个Table,并让这个Table的高度(或显示的行数)一定,可是现在的问题当Table中数据越来越多的时候,Table就把BorderLayout.NORTH部分撑的很宽(纵向),而我意图是给此Table一个最大的高度,当Table的行数增加以致Table要超过这个高度的时候,就出现ScrollPanel的滚动条。

再一个问题是当初始Table中没有数据或者只有一两条数据的时候,整个BorderLayout.NORTH还是被撑的很宽,这是怎么回事啊?

我现在的做法是这样(请参看下面代码),把Table放进一ScrollPanel中,再把此ScrollPanel放进一JPanel中,再把此JPanel放到JFrame的BorderLayout.NORTH处,有上面问题,我不知道应该限制谁的高度、如何去限制。请高手赐教!谢谢!(另外,不用中间的JPanel而直接把包含表格的ScrollPanel放进BorderLayout.NORTH也可吧?)

JTable table = new JTable(tableModel);
JPanel paneTop = new JPanel();
paneTop.setLayout(new BorderLayout());
paneTop.add(new JScrollPane(table));

this.getContentPane.setLayout(new BorderLayout());
this.getContentPane.add(paneTop,BorderLayout.NORTH);
this.getContentPane.add(new Label("center"),BorderLayout.CENTER);
this.getContentPane.add(new Label("south"),BorderLayout.SOUTH);
...全文
2471 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nt941 2003-08-26
  • 打赏
  • 举报
回复
谢谢胖兄DOC,英文不过关,一头雾水啊!
能劳驾你简单说一下用法吗?怎样用它实现我的意图?
谢谢!
fpwang 2003-08-26
  • 打赏
  • 举报
回复
http://java.sun.com/products/javabeans/beanbuilder/1.0/docs/guide/tutorial.html#spring
fpwang 2003-08-26
  • 打赏
  • 举报
回复
用javax.swing.SpringLayout吧
我使SUN的BeanBuilder时发觉他非常方便,而且符合你的要求
nt941 2003-08-25
  • 打赏
  • 举报
回复
另外,主帖代码中的this指的是主窗口JFrame。
nt941 2003-08-25
  • 打赏
  • 举报
回复
胖子兄:
对不起,我说错了,我是说不知如何设置那个X的值,因为横向我不关心,只要让它充满它的上层容器就行了。
当然X的值按你说的办法也行,不过我觉得这样有点复杂啊,我总觉得应该有简单的办法来实现我的想法(比如直接限定表格或者JScrollPane的高度)。
fpwang 2003-08-25
  • 打赏
  • 举报
回复
监听窗口事件,在窗口大小改变时,动态设置y值可以么?
nt941 2003-08-25
  • 打赏
  • 举报
回复
谢谢二位仁兄!
胖子兄:
你说的办法我也想到了,可是我不知道怎样设置Dimension(x, y)中的那个y,以为我不想控制表格的横向长度。
sun2927 2003-08-25
  • 打赏
  • 举报
回复
帮你up
fpwang 2003-08-25
  • 打赏
  • 举报
回复

JPanel.setMaximumSize(new Dimension(x, y));
JPanel.setMinimumSize(new Dimension(x, y));
JPanel.setPreferredSize(new Dimension(x, y));
fpwang 2003-08-25
  • 打赏
  • 举报
回复
你试试
ScrollPanel.setMaximumSize(new Dimension(x, y));
ScrollPanel.setMinimumSize(new Dimension(x, y));
ScrollPanel.setPreferredSize(new Dimension(x, y));
nt941 2003-08-25
  • 打赏
  • 举报
回复
zhouwj 2003-08-25
  • 打赏
  • 举报
回复
这种布局他的用意是设置好四周的大小而中间的就自动调整。
因此我们只能设置四周容器的大小,对于中间设了也没用。
四周的设置使用setPreferredSize();

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧