Следующий мой код, я пытаюсь нарисовать линию, которая простирается от одного конца экрана к другому, но когда я вызываю getWidth() и getHeight() для создания объекта линии, методы возвращают 0. Почему это происходит и как мне избежать этого.Почему getHeight() и getWidth() возвращают 0 в конструкторе? и как этого избежать?
public class LineComponent extends JComponent {
private Shapes shape;
public LineComponent() {
shape = new Line((int) Math.round(Math.sqrt(getHeight() * getHeight() + getWidth() * getWidth()))
,new Point(getWidth()/2, getHeight()/2));
}
Мне нужно было бы изменить размер моего компонента, и мне нужно было бы узнать первоначальный размер, когда он впервые выложен. Есть ли способ избежать использования ComponentListener – Mike
«Лучшее» решение, которое у вас есть, - это определить 'preferredSize' компонента, переопределив его метод getPreferredSize. Нет никакой гарантии, что компонент будет выложен с использованием этого размера, хотя это даст вам отправную точку. – MadProgrammer