当前位置: 首页 > 面试题库 >

Java:组件中的setPreferredSize()和setSize()方法之间的区别

程沛
2023-03-14
问题内容

我阅读了Java文档,但无法弄清楚这两种方法之间的主要区别是什么。有时我用了setSize(),有时是setPreferredSize(),有时是一个做我想做的,有时是另一个。

那么,两者的主要区别是什么?我应该使用哪一个JFramesJPanels


问题答案:

简短的答案是:很复杂。

稍长一点的答案是:setSize()如果组件的父级没有布局管理器,setPreferredSize()以及与之相关的组件setMinimumSizesetMaximumSize如果有),则使用。

setSize()如果组件的父级使用布局管理器,则可能什么都不做;通常会对其产生影响的位置将位于顶级组件(JFramesJWindows)及其内部的东西上scrolled panessetSize()如果你的组件内部没有布局管理器,则还必须调用。

通常,setPreferredSize()如果你有布局管理器,则应该做“正确的事情”;大多数布局管理器的工作方式是获取其组件的首选(以及最小和最大)大小,然后根据布局规则使用setSize()setLocation()放置这些组件。因此(作为示例),a BorderLayout将尝试使其“北部”区域的边界等于preferred size其北部部分的边界-它们最终可能大于或小于该范围,具体取决于jframe的大小,其他组件的大小在布局中,依此类推。



 类似资料:
  • 问题内容: 我不清楚和之间的区别。如果我使用而不是会发生什么。 方法到底能做什么? 问题答案: 调用窗口将根据其包含的组件的preferredSize对其大小进行调整。它应尽可能小,但要考虑其组件的preferredSize和布局。如果您只是随机使用,则添加到内容窗格中的组件将进行扩展/收缩以适应可用空间,这意味着可能会覆盖每个组件的首选大小。 设置组件的大小并设置首选的大小。Layoutmana

  • 问题内容: 在其他更改中,JDK 11为java.lang.String类引入了6种新方法: -重复字符串多次通过所提供的参数 -使用分隔符从源字符串懒惰地提供行 -指示字符串是否为空或仅包含空格字符 -从开头删除空白 -从末端去除空白 -删除字符串开头和结尾的空格 尤其看起来与十分相似。按照本文的规定, 方法旨在: String.strip(),String.stripLeading()和Str

  • 问题内容: 我只是在阅读教科书中给我的课文,我不确定自己是否明白我在说什么。这基本上是在告诉我静态方法或类方法包括关键字“修饰符” static。但是我真的不知道那意味着什么吗? 有人可以简单地向我解释什么是静态方法或类方法吗? 另外,我可以简单解释一下什么是Instance方法吗? 这是他们在教科书中给我的: 存在或不存在静态修饰符具有重要的实际意义。一旦Java处理了它所属的类的定义,就可以调

  • 问题内容: 我知道已经解决了这个问题,但是我在SO上看到了不一致的论点。 所以,如果我有: 我得到 FALSE 。 据我了解,这是因为和是对同一对象()的两个不同引用。 所以我会有类似的东西: 现在,如果我只想比较两个字符串的 内容 ,我将使用 这是否意味着如果两个引用指向同一个对象,JVM就会简单地返回?因此,它不是在逐个字符地进行比较吗? 谢谢 编辑 拿着电话。感谢您指出优先顺序!!! 当我将

  • 问题内容: react redux中的component和container有什么区别? 问题答案: 是React API的一部分。组件是描述React UI的一部分的类或函数。 容器 是React组件的非正式术语,该组件被Redux存储。容器接收Redux状态更新和操作,并且它们通常不呈现DOM元素。他们将渲染委托给 演示 性子组件。 有关更多详细信息,请阅读Dan Abramov的presen

  • 问题内容: 我试图弄清楚 方法签名中的 Throw 和Java中的 Throw语句 之间的区别。方法签名的抛出如下: 抛出语句如下: 据我了解,方法内签名是一种通知,通知该方法可能会抛出此类异常。语句是根据情况实际抛出创建的对象的东西。从这个意义上说,如果方法中存在 throw* 语句,则应始终出现 throw in方法签名。 * 但是,以下代码似乎没有这样做。代码来自库。我的问题是为什么会这样?