У меня есть объект JPanel
, в котором я использую его в качестве холста для рисования прямоугольных фигур и звоня по методу updateString(String c, int x, int)
, чтобы нарисовать код String c
всякий раз, когда я называю этот метод в своей основной.Метод drawString не работает
У меня также есть локальная переменная private Graphics page;
в верхней части моего кода. Вот updateString()
метода:
public void updateString(String c, int ind1, int ind2)
{
for(int i = 0; i < Math.pow(DIMENSION, 2); i++)
if(grid[i].contains(new Point(ind1, ind2)))
{
page.drawString(c, (int) grid[i].getCenterX(), (int) grid[i].getCenterY());
repaint();
return;
}
}
сетки [] является массивом моих Rectangle
объектов, чтобы сохранить данные о Rectangle
объектах, и я на самом деле рисовать их в моем paintComponent()
метода.
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
page = g;
for(int i = 0; i < Math.pow(DIMENSION, 2); i++)
{
g.drawRect(grid[i].x, grid[i].y, grid[i].width, grid[i].height);
}
}
дело, что я не мог понять, почему каждый раз, когда я вызываю метод updateString()
, он просто не обновляет и поставить строку в середине прямоугольника, который я сначала нарисовали?
Спасибо.
Ага Так он просто заканчивается, когда метод закончен. Но есть ли способ сделать этот рисунок внутри другого метода? –
@VerumInfiniti: Почему бы просто не поставить JLabel посередине и не задать свой текст? –
Поскольку мое задание мне так говорило, я все равно сделаю это на вашем пути. Тем не менее, я рассмотрел это, но не мог быть уверен, потому что думал, что должен быть способ сделать эту легкую вещь drawString. –