扩展JPanel的问题

时间:2010-04-07 12:40:27

标签: java inheritance

我有一个抽象的实体:

public abstract class Entity extends JPanel implements FocusListener

我有一个TextEntity:

public class TextEntity extends Entity

在TextEntity的构造函数中,我想放置一个覆盖面板的JTextArea:

textArea = new JTextArea();
textArea.setSize(getWidth(),getHeight());
add(textArea);

但是getWidth()getHeight()返回0.是继承还是构造函数的问题?

3 个答案:

答案 0 :(得分:3)

不是继承问题。 可能在构造函数中,JPanel仍然没有大小。

答案 1 :(得分:1)

尝试使用一些LayoutManager来处理面板内部组件的大小。例如BorderLayout,并将textarea添加到中心。

这样的事情(自编码Swing以来已经过了几年):

textArea = new JTextArea();
textArea.setSize(getWidth(),getHeight());
setLayout(new BorderLayout());
add(textArea, BorderLayout.CENTER);

现在,当您使面板可见时,布局管理器应该注意保持textarea与面板的大小相同。另外,请确保面板中没有任何边框。

答案 2 :(得分:0)

根据布局,您需要设置嵌入式组件的首选/最小/最大尺寸,以便包计算实际尺寸。