В настоящее время я пытаюсь создать игру с графическим интерфейсом, который должен нарисовать новые вещи на экране при нажатии кнопки. Например:Перекрашивание рамки с помощью мыши?
public class GUI() extends JPanel {
public void paintComponent() {
/*
*Basic initial set up here
*/
// ***** Call method here on mouse click *****
}
public void setUpGUI() {
JFrame mainFrame = new JFrame();
GUI paintGUI = new GUI();
clickDetector click = new clickDetector();
mainFrame.addMouseListener(click);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setSize(500, 500);
mainFrame.getContentPane().add(paintGUI);
mainFrame.setVisible(true);
}
public static void main(String args[]) {
GUI gui = new GUI();
gui.setUpGUI();
}
}
Мне нужно реализовать метод в // ***** Call method here on mouse click *****
, который будет рисовать на новых дополнения к раме (в моем случае это круги, которые представляют собой фигуру на доске), но я не уверен, как для этого нажмите кнопку. Как я могу перекрасить кадр при каждом щелчке мыши, чтобы я мог изменить свою игровую панель?
---- EDIT ----
Вот мой paintComponent код, вместе со слушателем используется перекрашивать.
public void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println("Method called");
g.setColor(Color.red);
for(int y = 0; y < 6; y++) {
for(int x = 0; x < 7; x++) {
g.fillOval(x*70 + 10, y*70 + 10, 50, 50);
}
}
g.setColor(Color.BLACK);
g.fillRect(0, 430, 500, 50);
g.setColor(Color.white);
g.drawString("CONNECT FOUR", 250, 450);
g.setColor(Color.LIGHT_GRAY);
click.paintPiece(g);
}
public void mouseClicked(MouseEvent e) {
this.repaint();
}
Вот метод, который paintComponent должен быть вызовом, но не
public void paintPiece(Graphics g) {
int x = getMouseX() + 10;
int y = mover.getRow() + 10;
g.fillOval(x, y, 50, 50);
}
Вы пытались вызвать 'repaint()' при получении щелчка мыши? – John