У меня есть следующая сетка с ячейками размером 10х10, и я пытаюсь написать определенное число в абсолютной середине каждой ячейки. есть ли способ сделать это?
сетка выглядит так:
сетка создается внутри public void paintComponent(Graphics g)
, масштабируется и имеет следующий код:
g.setColor(Color.darkGray);
for (int i = 0; i < getWIDTH(); i++) {
g.drawLine(i * size, 0, i * size, HEIGHT);
}
for (int i = 0; i < getHEIGHT(); i++) {
g.drawLine(0, i * size, WIDTH, i * size);
}
обновление: мне удалось сделать это с помощью метода g.drawString
, но текст не по центру и остается того же размера при увеличении нашего
****** РЕШЕНИЕ *******
обновление: после того, как я попробовал свои силы с несколькими приемами, в основном странными и довольно глупыми, я нашел способ сделать это. идея в том, что я объявляю набор координат, которые будут использоваться в методе drawString()
. позиция не идеальна, но она делает свое дело, и, как кто-то однажды сказал, если это выглядит глупо, но это работает, то это не глупо. даже шрифт может масштабироваться, увеличиваться или уменьшаться в размере при увеличении или уменьшении, и будет отображаться, только если размер сетки больше 20 пикселей. сетка теперь выглядит следующим образом (я должен изменить шрифт, хотя):
код:
if(size > 20) {
g.setColor(Color.darkGray);
Font smallNumbers = new Font("SansSerif", Font.PLAIN, size/2);
int x = j * size + size / 3;
int y = i * size + (size * 100) / 145;
g.setFont(smallNumbers);
g.drawString("0", x, y);
}