我有一个抽象的实体:
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.是继承还是构造函数的问题?
答案 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)
根据布局,您需要设置嵌入式组件的首选/最小/最大尺寸,以便包计算实际尺寸。