Проблема с расширением JPanel - PullRequest
0 голосов
/ 07 апреля 2010

У меня есть абстрактная сущность:

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 ]

3 голосов
/ 07 апреля 2010

Не должно быть проблемы наследования. Вероятно, в конструкторе у JPanel еще нет размера.

1 голос
/ 07 апреля 2010

Попробуйте использовать какой-нибудь LayoutManager, который позаботится об изменении размера компонентов внутри панели. Например, BorderLayout и добавьте текстовое поле в центр.

Примерно так (прошло несколько лет с тех пор, как я написал Swing):

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

Теперь, когда вы делаете панель видимой, менеджер по расположению должен позаботиться о том, чтобы текстовая область была такой же, как у панели. Также убедитесь, что на панели нет границ.

0 голосов
/ 07 апреля 2010

В зависимости от компоновки вам потребуется установить предпочтительный размер / мин / макс для встроенных компонентов, чтобы пакет мог рассчитать фактические размеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...