У меня проблемы с перекрашиванием окна при нажатии кнопки. То, что должно произойти, когда я нажимаю кнопку, это то, что на рамке должно быть нарисовано больше кругов (технически это должно быть количество кругов, нарисованных в последний раз * 2) По какой-то причине это не работает, и я не могу понять, почему он не перекрашивается. Вот мой код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Roaches {
public static void main(String[] args) {
//Create the frame
JFrame frame = new JFrame();
//Set the frame's size
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Roaches!");
//Create the button
JButton button = new JButton("Multiply Roaches!");
button.addActionListener(new Roach());
JPanel buttonPanel = new JPanel();
//Add the button to the panel
buttonPanel.add(button);
//Add the panel to the frame
frame.add(buttonPanel, BorderLayout.SOUTH);
//Add the roach panel to the frame
frame.add(new Roach());
//Make frame visible
frame.setVisible(true);
}
}
class Roach extends JComponent implements ActionListener {
//Keep track of how many roaches to draw
private int roachCount = 1;
protected void paintComponent(Graphics g) {
Graphics2D gr = (Graphics2D)g;
for(int i = 0; i < roachCount; i++) {
int x = 5 * i;
int y = 5 * 1;
gr.drawOval(x, y, 50, 50);
}
System.out.println("REPAINT"); //For testing
}
public void actionPerformed(ActionEvent e) {
roachCount = roachCount * 2;
repaint();
System.out.println("CLICK!!!!"); //For testing
}
}
Я не знаю, имею ли я представление о событиях или перерисовке неправильно, поэтому любая помощь / указатели будут оценены. Спасибо!