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
# 1 楼答案
它与在类层次结构中调用构造函数、方法等有关,也就是说,它与代码的确切位置有关
基本上,您希望调用的方法或构造函数可能没有达到您预期的程度。建立一个系统。在所有方法中(或使用调试器)查看以什么顺序调用什么代码。我可以向你保证,你期望的代码在不调用之前被调用,在调用之后被调用。这将取决于代码在类层次结构中的调用方式
# 2 楼答案
您可能使用了空布局,或者在呈现组件之前在组件上调用“getSize()”,或者在封闭的顶级窗口上调用“pack()”,或者您没有覆盖组件的JComponent的
getPreferredSize()
方法。。。这里有很多可能性,为了获得更好的帮助,你需要告诉我们更多关于这个类、你的GUI和你的问题的细节