有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JComponent不可见

我正在swing中处理一个项目,我有一个类,它是JComponent的子类,但不重写它的任何方法。稍后,在该类的一个子类中,我调用以下代码:

System.out.println(fImage.getHeight() + " " + fImage.getWidth());
propertyFrontLabel = new JLabel(new ImageIcon(fImage));
propertyBackLabel = new JLabel(new ImageIcon(bImage));
propertyFrontLabel.setSize(fImage.getWidth(), fImage.getHeight());
Dimension d = propertyFrontLabel.getSize();
this.setPreferredSize(d);
this.setSize(d);
System.out.println(d.getSize());
System.out.println(this.getSize());
add(propertyFrontLabel);

这些打印行打印出以下内容:
479 296
JAVAawt。尺寸[宽度=296,高度=479]
JAVAawt。尺寸[宽度=0,高度=0]

我不知道发生了什么事。为什么它的大小仍然是0,0


共 (2) 个答案

  1. # 1 楼答案

    它与在类层次结构中调用构造函数、方法等有关,也就是说,它与代码的确切位置有关

    基本上,您希望调用的方法或构造函数可能没有达到您预期的程度。建立一个系统。在所有方法中(或使用调试器)查看以什么顺序调用什么代码。我可以向你保证,你期望的代码在不调用之前被调用,在调用之后被调用。这将取决于代码在类层次结构中的调用方式

  2. # 2 楼答案

    您可能使用了空布局,或者在呈现组件之前在组件上调用“getSize()”,或者在封闭的顶级窗口上调用“pack()”,或者您没有覆盖组件的JComponent的getPreferredSize()方法。。。这里有很多可能性,为了获得更好的帮助,你需要告诉我们更多关于这个类、你的GUI和你的问题的细节