Получить высоту и ширину JComponent в конструкторе

#java #swing #jframe #jcomponent

#java #качать #jframe #jcomponent

Вопрос:

Я хочу получить высоту и ширину моего JFrame, чтобы графика находилась в том же относительном положении, даже если размер окна изменен. Для этого я пытаюсь получить высоту и ширину в моем конструкторе, но он всегда возвращает 0. Каков наилучший способ сделать это?

 public class FireworkComponent extends JComponent {
   public FireworkComponent() {
   //some variables ....

  this.getHeight();
  this.getWidth();
    }
  

}

Ответ №1:

Размеры вернутся, 0 если компонент не реализован (т. е. виден). Если вы переопределите paintComponent метод компонента, вы сможете получить размеры контейнера и установить графику в определенном месте, рисуя на Graphics объекте компонента.

Ответ №2:

Попробуйте вызвать pack(); перед вызовом getHeight(); или getWidth();

Ответ №3:

Не пытайтесь получить это в конструкторе, используйте это.ВЫСОТА и это.WIDTH и устанавливаем его с помощью

метод public void setLocation(int x, int y). Убедитесь, что вы делаете это в методе paintcomponent, который вы должны переопределять, чтобы он вызывал его каждый раз, когда он изменяет размер.