2010-06-22 152 views
0

我使用的是Netbean的表单创建器,我尝试了一些东西。我不确定它是否是布局管理器,但是当我创建自己的JPanel并将其添加到我的窗口的主内容窗格时,面板的大小始终在FrameView内部最大化,而不管使用何种重新标注方法如setSize或setPreferred大小。我对AWT和Swing很陌生。如何设置JPanel大小?

+0

您使用的是什么布局管理器? – Xorty 2010-06-22 18:35:40

回答

2

使用NetBeans所见即所得的设计器,它是一个和平的蛋糕 - 只要确保使用Free Form Design并使用鼠标调整大小。也许面板本身比FrameView大,所以双击它(你正在编辑它),并使其更小。比双击回到父组件,你应该没问题。

或者可能在NetBeans site上查看一些教程。

-1

以我的经验,Swing是一件非常挑剔的事情。我会尝试setMaximumSizesetPreferedSize。作为一个侧面说明:虽然我曾经使用过GridLayout,它总是延伸每个单元格中的任何内容(为了使它对称我猜)。流,框,边框,我认为GridBag没有这个问题。

-Brett

+0

setPreferredSize是您想给布局管理器的提示。 – 2010-06-22 19:28:54

2

你不应该手动设置大小。将其留给布局管理器,当窗口大小或字体甚至按钮标签更改时,GUI不会中断。

与的诀窍是,你可以使用不只一个,但几个,嵌套JPanel s。这样,几乎任何布局都是可能的。

+0

比嵌套广告无穷无敌(或者是那个广告无聊),要使用面向桌面的布局管理器(http://www.google.com/search?q=table-oriented+layout+manager)作为您的主要布局管理器。 – 2010-06-22 19:53:14

+1

@Software Monkey:我肯定不会说这是一个更好的方法;它取决于GUI的要求。对于类似于表单的数据输入UI,面向表格的布局是很好的。但并不是所有的用户界面都是这样,即使这样,尝试使用单一布局管理器的一切工作也不是一个好主意。 – 2010-06-22 20:00:37

+0

好的,谢谢迈克尔。你在说我不应该混淆根窗格,并且我应该添加控件到布局管理器控制窗格,这些控件应该具有像我期待的相对位置。 我只是将编辑控件拖到子窗格中作为测试,并将其展开到其父窗格中。我不知道属性控制这种行为,但更多的信息将不胜感激。 – chaz 2010-06-22 21:48:51

0

发生这种情况是因为JPanel容器的布局管理器(可能是JFrame或另一个JPanel)指示JPanel最大化。

执行以下操作:

  1. 了解,这是谁的JPanel的父(看看的NetBeans的包容对象树)

  2. 检查,什么布局的容器

    定义
  3. 阅读LayoutManager的(他们在java.awt包)

  4. 的文档???

  5. 利润!