java - JComponent 不可见

标签 java swing 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);

这些打印行打印出以下内容:
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/

相关文章:

java - 如何使用 url 作为 StringReader 的 InputSource

java - 遵循有关此问题的建议后,在 Mac 上仍然有 Eclipse EE 404

java - 如何让JTable像windows一样调整大小?

java - JMenu 弹出窗口有时有效

java - JComponent 未注册

java - Eclipse 在 Java Build Path -> Libraries editing 期间不显示 lib 目录

java - jtree右键只选择一个节点

java - 如何将文本设置到位于 jFrame 内的 jPanel 内的 jTextField 中以从其他 jFrame 中

java - 如何获取 JFrame 中的所有元素?

java - 除非由类内的主要方法创建,否则 JFrame 不会加载所有组件