代码之家  ›  专栏  ›  技术社区  ›  Halo

扩展jpanel的问题

  •  0
  • Halo  · 技术社区  · 15 年前

    我有一个抽象的实体:

    public abstract class Entity extends JPanel implements FocusListener
    

    我有一个文本实体:

    public class TextEntity extends Entity
    

    在textfentity的构造函数内部,我想放置一个jtextrain,它将覆盖面板:

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

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

    3 回复  |  直到 15 年前
        1
  •  3
  •   Andrea Polci    15 年前

    Shuldn不是继承问题。 可能在构造函数中,jpanel还没有大小。

        2
  •  1
  •   fish    15 年前

    尝试使用一些布局管理器来调整面板内组件的大小。例如borderlayout,并将文本区域添加到中心。

    类似这样的(我已经有几年没有编码Swing了):

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

    现在,当您使面板可见时,布局管理器应该注意保持文本区域与面板大小相同。还要确保面板中没有任何边框。

        3
  •  0
  •   ddimitrov    15 年前

    根据布局,您需要在嵌入组件处设置首选/min/max大小,以便pack计算实际大小。