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

Java,JFrame:getWidth()返回0

蓬森
2023-03-14
问题内容
setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH);
setResizable(false);
setUndecorated(true);
System.out.println("--------> "+getContentPane().getWidth()); //----> 0 why is this happening?

我正在尝试确定JFrame的大小。我在Google上搜索并检查了文档,但我仍然不知道为什么它不起作用在我尝试过的任何其他控件上都可以正常工作

编辑:frame.getWidth()在类之外(扩展JFrame)仍然被调用时可以工作,如果我替换的话

System.out.println("--------> "+getContentPane().getWidth());

System.out.println("--------> "+this.getWidth());

getWidth仍将返回0

EDIT2:在设置可见和填充之前,我需要框架的大小。我需要向框架添加其他控件,它们的坐标和大小取决于框架的大小。


问题答案:

之所以得到0,是因为您没有调用pack(),setSize(int,int)或setSize(Dimension)中的任何一个。仅当调用这些方法之一时,才会计算框架的布局。

JFrame frame = new JFrame("My Frame");
frame.setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH);
frame.setResizable(false);
frame.setUndecorated(true);
frame.pack(); // Important line!!! 
frame.setVisible(true);
System.out.println("--------> "+getContentPane().getWidth());


 类似资料:
  • 问题内容: 我有一类这样的方法: 我如何在另一个类中调用此方法? 问题答案: 1. 如果要从中调用该方法的类位于同一包中,则创建该类的实例并调用该方法。 2. 使用 3. 最好有个赞等等。 例如:

  • 问题内容: 当我尝试从Java代码中删除tomcat服务器conf / Catalina / localhost中存在的文件时,file.delete()始终返回false。但是,如果我通过file.exists()函数检查文件,它将返回true。我没有任何例外。请帮助我们为什么会这样。有什么解决方案? 问题答案: 当我尝试从Java代码中删除tomcat服务器conf / Catalina /

  • 问题内容: 我知道有人问过这个问题,但我无法解决 对于带有正文(西班牙语)的书本对象:(实际上更长一些) 我一直为以下原因返回0: 我一直在控制台上。为什么哦为什么? 问题答案: 从Matcher.groupCount()的javadoc中: 返回此匹配器模式中的捕获组数。 零组按照惯例表示整个模式。它不包括在此计数中。 如果您检查返回值,则返回,然后返回,因此匹配器会找到匹配项。 如果您要尝试计

  • 问题内容: 我正在使用以下命令获取此特定文件的URL,但它返回null。是否有人对问题有任何建议或其他替代方法? 问题答案: 对于那些使用Intellij Idea的用户:检查设置->编译器->资源模式。 该设置包含所有应解释为资源的扩展。如果扩展不符合此处的任何模式,则class.getResource将为使用此扩展的资源返回null。

  • 问题内容: 我正在尝试执行新的JDK 8函数式编程领域中似乎是相对基本的事情,但是我无法使其工作。我有这个工作代码: 它接受一个数字列表,并产生可以打印出来的功能列表。但是,显式强制转换为Callable似乎是多余的。在我和IntelliJ中看来。我们都同意这也应该起作用: 但是我得到一个错误: 问题答案: 您遇到了Java 8目标类型的限制,该限制适用于方法调用的 接收者 。尽管目标类型在大多数

  • 问题内容: 这是获取NullPointerException错误的代码: 可能出什么问题了? *编辑:printStackTrace 编辑2:编写代码,直到出现例外: 问题答案: 好,我知道了。我必须将主要活动的上下文传递给此类,然后使用 对于有相同问题的任何人,请执行以下操作:将其放在具有活动的类的onCreate函数中: 将上下文传递给新类的函数(在我的示例中为“ process(String