我正在 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);
这些打印行打印出以下内容:
479296
java.awt.Dimension[宽度=296,高度=479]
java.awt.Dimension[宽度=0,高度=0]
我不知道发生了什么。为什么这个的大小仍然是0,0?
最佳答案
您可能使用了空布局,或者在渲染组件之前或在封闭的顶级窗口上调用“pack()”之前在组件上调用“getSize()”,或者您不重写 JComponent 的组件的 getPreferredSize()
方法...这里有很多可能性,为了获得更好的帮助,您需要告诉我们很多更多细节此类、您的 GUI 和您的问题。
关于java - JComponent 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676312/