【问题标题】:Difference between setBounds(x,y,width,height) and setBounds(new Rectangle(x,y,width,height))setBounds(x,y,width,height) 和 setBounds(new Rectangle(x,y,width,height)) 的区别
【发布时间】:2018-05-09 13:16:05
【问题描述】:

是否有可能当我们使用Java的setBounds(x,y,width,height)方法时,如果我们更换机器(不同尺寸的显示器或任何多种尺寸的显示设备),组件可以从一个地方改变到另一个地方,并且setBounds(new Rectangle(x,y,width,height))方法不会受到影响从同一个问题。 如果我说的是正确的,有人可以帮助理解这一点吗?

【问题讨论】:

  • 您是指setBounds 上的JFrame,具体而言?在任何情况下,这两种方法都应该具有 same 行为。 (当然,除非其中一种方法以令人困惑的方式被覆盖......)
  • 在我的一个项目中,我使用 setBounds(x,y,width,height) 在 JFrame 上设置摆动组件。用户界面和我预期的完全一样。但是我尝试在不同的机器上运行相同的代码,我注意到组件没有像在我的本地(在我的笔记本电脑上)上那样发生。那么 setBounds(new Rectangle(x,y,width,height)) 方法解决了这个问题吗?
  • 最有可能:不,方法应该这样做。 但是当您使用setBounds 将组件在 另一个组件中定位时,这种行为就不足为奇了。您应该使用LayoutManager。在不同的操作系统上组件的大小可能不同(例如,JFrame 中可用的空间将取决于标题栏的大小等)
  • "是否有可能当我们使用Java的setBounds(x,y,width,height)方法时,如果我们更换机器(不同尺寸的显示器或任何多尺寸显示设备),组件可以从一个地方改变到另一个地方.." 嗯.. 适应不同的屏幕条件正是 Java 布局管理器 的设计目的。学习使用它们,您将看到它们如何满足需要。另见What is the XY problem?
  • 如果我有第二次机会投票结束这个,我会选择带有文本的自定义原因 “OP 似乎想建立一个仅使用锡罐和绳子的卫星通信系统。 " ..也许我不能收回原来的'太宽泛'的关闭注释更好。

标签: java swing awt


【解决方案1】:

这是第二种方法的实现:

public void setBounds(Rectangle r) {
    setBounds(r.x, r.y, r.width, r.height);
}

所以回答你的问题:它们是相同的。

【讨论】:

    【解决方案2】:

    setBounds(x,y,width,height) 和 setBounds(new Rectangle(x,y,width,height)) 的区别

    这些方法的作用没有区别。它们只是接受不同参数但执行相同任务的重载方法。

    如果您查看 Java 文档:

    public void setBounds(Rectangle r)

    设置此 Rectangle 的边界 Rectangle 以匹配指定的 Rectangle。 包含此方法是为了完整性,与 Component 的 setBounds 方法并行。


    public void setBounds(int x, 整数, 整数宽度, 整数高度)

    将此 Rectangle 的边界 Rectangle 设置为指定的 x、y、宽度和高度。 包含此方法是为了完整性,与 Component 的 setBounds 方法并行。

    【讨论】:

    • 感谢你们帮助我理解这一点。
    • 您可以通过单击答案旁边的勾号来接受对您最有帮助的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2020-01-08
    • 2012-12-14
    • 2014-07-05
    相关资源
    最近更新 更多