Размер и положение Java PaintComponent в подклассе абстрактного класса, расширяющего Jpanel - PullRequest
1 голос
/ 07 ноября 2011

Я строю простую игру в шахматы и пытаюсь рисовать рисунки на панели

У меня есть готовая доска и на ней есть панели. эти панели размером 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 ... вверху остается зазор, скриншот:
http://imgur.com/INVj4

1 Ответ

1 голос
/ 07 ноября 2011
  • , если вы только установите Background на Color.GREEN, то расширяет JComponent,

  • , если хотите добавить только Изображение , затем найдите значок в JLabel , заметка JLabel прозрачна, non-opaque по умолчанию,

  • любая JComponent может вернутьsetXxxSize,

  • не все LayoutManager принято setXxxSize,

пример JComponent с setXxxSize

...