Я строю простую игру в шахматы и пытаюсь рисовать рисунки на панели
У меня есть готовая доска и на ней есть панели. эти панели размером 70x70 пикселей, и следующее, что я хочу сделать, это использовать ЭТО ВСЮ ПОВЕРХНОСТЬ для рисования шахматных фигур.
Я создал абстрактный класс Pieces, расширяющий JPanel.
public abstract class Piece extends JPanel
Одна из фигур, конечно, пешка:
public class Pawn extends Piece
в классе Pawn у меня есть компонент рисования:
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int w = getWidth();
int h = getHeight();
g.setColor(Color.GREEN);
g.fillOval(0, 0, w, h);
System.out.println("height:"+h+" width:"+w);
}
Это не похоже на работу. выходной отпечаток высота = 10 пикселей и ширина = 10 пикселей; .... но он должен быть 70px и 70px. Я также вижу зеленый овал, нарисованный внутри квадрата 10х10, который находится внутри моей панели ...
Я попробовал setSize (70,70), который на самом деле не работает ...
Я также попробовал SetPreferredSize, но это тоже не сработало.
Я действительно хочу сохранить свой абстрактный класс и подклассы ...
@@@ EDIT @@@
Я снова использовал setPreferredSize и теперь могу нарисовать зеленый круг на Jpanel. но ошибка остается, так как в ней не вся поверхность Jpanel Used ... вверху остается зазор, скриншот: