Это мой второй семестр, посвященный Java, поэтому, пожалуйста, наберитесь терпения. Частью моего задания является нажатие радиокнопки и использование метода рисования Circle для рисования объекта Circle на панели содержимого Jpanel при нажатии кнопки мыши. Затем сохраните каждый объект Circle в Arraylist, чтобы он оставался на панели, пока я не сниму переключатель. Я могу заставить работать все, кроме добавления объекта Circle в Arraylist и сохранения этого круга на экране. Он просто рисует один круг за раз и стирает первый предыдущий, когда я снова нажимаю. Я не думаю, что добавляю новые круги, созданные в Arraylist, я просто круг. Не уверена.
Вот мой код для части, которая рисует круг.
public class MyPanel extends JPanel {
public ArrayList<Circle> circles;
public void paintComponent(Graphics g) {
Circle c = new Circle(xstart, ystart); //create a new circle
ArrayList<Circle> circles = new ArrayList<Circle>();
if (drawing){
c.draw(g);
circles.add(c);
for(int k=0; k<circles.size(); k++){
circles.get(k).draw(g);
}
} // draw the circle
Код для рисования и объявления логического рисования в моем конструкторе MouseTest, привязанный к переключателю. Рисование true означает, что при нажатии переключателя он может рисовать круги.
JPanel radioPanel = new JPanel(new GridLayout(2,0)); //new GridLayout(y, x)
radioPanel.add(circleButton);
radioPanel.add(trackButton);
cp.add(radioPanel,BorderLayout.EAST);
drawing = false;
circleButton.addActionListener(new ActionListener() {
//Set drawing to true when the button is clicked
public void actionPerformed(ActionEvent ae) {
drawCircles();
}
});
public void drawCircles() { //initialize tracking to false
drawing = !drawing;`