Напишите полную рабочую программу, которая рисует квадрат в середине кадра.
Ну, я думаю, что это ужасное требование.Рамка содержит строку заголовка и 4 рамки.Поскольку рамка сжимается в размере, вы не сможете рисовать квадрат в строке заголовка.
Произвольная роспись выполняется на панели, добавленной к рамке.Поэтому я думаю, что вы действительно должны пытаться центрировать панель в границах панели.Вам необходимо уточнить фактическое требование.
открытый класс Square расширяет Rectangle {
Почему вы расширяете Rectangle?
Если вам нужна информация x, y, width, height, тогда вы просто используете метод getBounds()
класса Rectangle
для получения информации.
Однако вы невам нужны значения x / y.
Если вы хотите отцентрировать прямоугольник, то вам нужно динамически вычислять значения x / y, как вы делаете свое собственное рисование, основываясь на текущем размере панели.
Вам нужно знать ширину / высоту прямоугольника, который вы хотите нарисовать, поэтому на самом деле вы должны создать Dimension
объект.Что-то вроде:
Dimension d = new Dimension(100, 100);
Затем, чтобы отцентрировать прямоугольник на панели, вам нужно знать ширину панели и ширину прямоугольника, чтобы вычислить место для рисования прямоугольника:
int x = (getWidth() - d.getWidth()) / 2;
int y = ...
g.drawRect(x, y, d.width, d.height);