Как работает метод paint? Почему не воспринимаются поля?

110
04 марта 2022, 01:30

Разбираюсь с методом paint(Graphics) у компонентов интерфейса. Столкнулся с такой интересной особенностью.

Допустим, я рисую чёрный прямоугольник внутри метода:

private class GraphicsArea extends JPanel{
    private float xn = 10f;
    private float yn = 10f;
   public void paint(Graphics g){
Graphics2D painter = (Graphics2D)g;
painter.setColor(Color.BLACK);
Rectangle2D graphicAreaRect = new Rectangle2D.Double(getX()+xn, getY()+yn, getWidth()-2*xn, getHeight()-2*yn);
 painter.draw(graphicAreaRect);
   }
}

В этом случае все работает и прямоугольник появляется. Но если я объявляю прямоугольник, как приватное поле, отрисовки не происходит.

    private class GraphicsArea extends JPanel{
    private float xn = 10f;
    private float yn = 10f;
    private Rectangle2D graphicAreaRect = new Rectangle2D.Double(getX()+xn, getY()+yn, getWidth()-2*xn, getHeight()-2*yn);
   public void paint(Graphics g){
Graphics2D painter = (Graphics2D)g;
painter.setColor(Color.BLACK);
painter.draw(graphicAreaRect);
   }
}

И так с любыми подобными фигурами. Почему так происходит? Метод не видит поля не примитивного типа?

Answer 1

Вероятно, методы getX, getWidth и т.п. в момент создания фигуры во втором случае возвращают значения, которые еще не отражают положения и размеров панели.

READ ALSO
Как с помощью DownloadManager загрузить файл, размер у которого заранее неизвестен?

Как с помощью DownloadManager загрузить файл, размер у которого заранее неизвестен?

Есть следующий код, который работает при скачивании файлов с заранее известным размером (выполняется внутри AsyncTask):

94
main в war из jboss

main в war из jboss

Необходимо, что бы в программе был и web и main файл, стартующий при запуске программыСобираю для jboss с помощью мавена war и main не отрабатывает

113
Вопрос про псевдослучайные числа и теорию вероятностей

Вопрос про псевдослучайные числа и теорию вероятностей

Программа генерирует псевдослучайные целые числа в диапазоне от 1 до 5Найти вероятную частоту выпадения серии из 5 одинаковых чисел

66
Какая приоритетность селекторов в CSS?

Какая приоритетность селекторов в CSS?

Правильно? Может что то пропустил?

108