Как нарисовать закрашенный круг в Java? - PullRequest
15 голосов
/ 24 марта 2010

У меня есть JPanel с сеткой. В «ячейки» сетки я могу поместить разные элементы (например, JButtons). С этим проблем нет. Но теперь я хочу поместить заполненный круг в некоторые клетки. Я также хотел бы связать ActionListener с этими кругами. Более подробно, если я нажму на круг, он исчезнет из текущей ячейки и появится в другой. Как я могу сделать это на Java? Я использую Swing.

Ответы [ 2 ]

29 голосов
/ 24 марта 2010
public void paintComponent(Graphics g) {
   super.paintComponent(g);
   Graphics2D g2d = (Graphics2D)g;
   // Assume x, y, and diameter are instance variables.
   Ellipse2D.Double circle = new Ellipse2D.Double(x, y, diameter, diameter);
   g2d.fill(circle);
   ...
}

Вот несколько документов о paintComponent ( ссылка ).

Вы должны переопределить этот метод в вашей JPanel и сделать что-то похожее на фрагмент кода выше.

В вашем ActionListener вы должны указать x, y, diameter и вызвать repaint().

12 голосов
/ 03 ноября 2013
/***Your Code***/
public void paintComponent(Graphics g){
/***Your Code***/
    g.setColor(Color.RED);
    g.fillOval(50,50,20,20);
}

g.fillOval(x-axis,y-axis,width,height);
...