Java 如何设置JPanel大小?

Java 如何设置JPanel大小?,java,swing,resize,jpanel,Java,Swing,Resize,Jpanel,我正在使用Netbean的表单创建者,我正在尝试一些东西。我不确定它是否是布局管理器,但当我创建自己的JPanel并将其添加到我的窗口的主内容窗格时,无论我使用什么重新标注方法(如setSize或setPreferred size),面板的大小始终在FrameView内最大化。我对AWT和Swing非常陌生。使用NetBeans WYSIWYG designer,这是一个小菜一碟-只需确保使用自由形式设计并使用鼠标调整大小即可。可能面板本身比FrameView大,所以双击它(您正在专门编辑它)并

我正在使用Netbean的表单创建者,我正在尝试一些东西。我不确定它是否是布局管理器,但当我创建自己的JPanel并将其添加到我的窗口的主内容窗格时,无论我使用什么重新标注方法(如setSize或setPreferred size),面板的大小始终在FrameView内最大化。我对AWT和Swing非常陌生。

使用NetBeans WYSIWYG designer,这是一个小菜一碟-只需确保使用自由形式设计并使用鼠标调整大小即可。可能面板本身比FrameView大,所以双击它(您正在专门编辑它)并将其缩小。然后双击返回到父组件,您应该会没事的


或者可以查看。

上的一些教程,使用NetBeans WYSIWYG designer,这是小菜一碟-只需确保使用自由形式设计并使用鼠标调整大小即可。可能面板本身比FrameView大,所以双击它(您正在专门编辑它)并将其缩小。然后双击返回到父组件,您应该会没事的


或者可以查看一些教程。

根据我的经验,Swing是一件非常挑剔的事情。我会尝试
setMaximumSize
setPreferedSize
。不过作为旁注:当我使用
GridLayout
时,它总是拉伸每个单元格中的任何内容(我想是为了使其对称)。流、框、边界,我认为GridBag没有这个问题


-布雷特

以我的经验,荡秋千是一件非常挑剔的事情。我会尝试
setMaximumSize
setPreferedSize
。不过作为旁注:当我使用
GridLayout
时,它总是拉伸每个单元格中的任何内容(我想是为了使其对称)。流、框、边界,我认为GridBag没有这个问题

-Brett

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

其诀窍在于,在嵌套的
JPanel
s中,不仅可以使用一个,还可以使用多个。这样,几乎任何布局都是可能的。

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


其诀窍在于,在嵌套的
JPanel
s中,不仅可以使用一个,还可以使用多个。这样,几乎任何布局都是可能的。

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

请执行以下操作:

  • 找出谁是这个JPanel的父对象(看看NetBeans的包容对象树)

  • 检查,为容器定义了什么布局

  • 阅读关于LayoutManager的文档(它们在java.awt包中)

  • 利润


  • 这是因为JPanel容器(可能是JFrame或另一个JPanel)的布局管理器指示JPanel最大化

    请执行以下操作:

  • 找出谁是这个JPanel的父对象(看看NetBeans的包容对象树)

  • 检查,为容器定义了什么布局

  • 阅读关于LayoutManager的文档(它们在java.awt包中)

  • 利润


  • 您使用的是什么布局管理器?您使用的是什么布局管理器?setPreferredSize是您想要给布局管理器的提示。setPreferredSize是您想要给布局管理器的提示。比无限嵌套(或者是无限制嵌套)更好的是使用面向表的布局管理器()对于您的主布局管理器。@softwaremonkey:我绝对不会称之为严格意义上更好的方法;这取决于GUI的要求。对于类似表单的数据输入UI,面向表的布局很好。但并不是所有的UI都是这样的,即使是这样,尝试让所有的东西都与单一的布局管理器一起工作也是一个坏主意。好的,谢谢Michael。你是说我不应该弄乱根窗格,我应该向布局管理器控制的窗格中添加控件,这些控件应该像我期望的那样具有相对位置。我只是将一个编辑控件作为测试拖动到子窗格中,并将其扩展到其父窗格中。我不知道属性控制这种行为,但如果能提供更多信息,我们将不胜感激。@chaz:我的意思是,Java布局是通过布局管理器的组合来控制的,而不是通过显式的大小属性。这需要了解各种布局管理器的工作方式。例如,BorderLayout将为其北部、南部、西部和东部子对象提供其首选的大小(即,JLabel子对象将获得其文本所需的最大空间),并为中心子对象提供所有剩余空间。例如,如果你把所有的实际内容放到NORTH(在一个适当细分的JPanel中),那么调整框架的大小不会导致它到处伸展。我的经验是,在一个典型的UI上,每个带有面向表的布局管理器的面板都用Java标准布局替换了许多嵌套面板。我希望一些较新的布局管理器可以缓解一些问题,但不是完全缓解。比无限嵌套(或者说是无限制嵌套)更好的方法是在主布局管理器中使用面向表的布局管理器();这取决于GUI的要求。对于类似表单的数据输入UI,面向表的布局很好。但并不是所有的UI都是这样的,即使是这样,尝试让所有的东西都与单一的布局管理器一起工作也是一个坏主意。好的,谢谢Michael。你是说我不应该弄乱根窗格,我应该向布局管理器控制的窗格添加控件,其中