Я пытаюсь сделать игру в понг на Java, но она не работает. Я сделал несколько тестов, и кажется, что переменные обновления, но что, когда я repaint();
в таймерами actionPerformed(ActionEvent e)
не вызывает метод paintComponent()
repaint() не вызывает paintComponent()
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PongGame extends JComponent implements ActionListener, MouseMotionListener{
public int state = 1;
public int paddleX;
public String buttonColor = "blue";
public int mouseX, mouseY;
private int ballX = 400;
private int ballY = 150;
public static void main(String[] args){
JFrame window = new JFrame("Pong");
PongGame game = new PongGame();
window.add(new PongGame());
window.pack();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocationRelativeTo(null);
window.setResizable(false);
window.setVisible(true);
Timer t = new Timer(20, game);
t.start();
}
public Dimension getPreferredSize(){
return new Dimension(800, 600);
}
public void paintComponent(Graphics g){
paddleX = mouseX;
g.setColor(Color.WHITE);
g.fillRect(0,0, 800, 600);
g.setColor(Color.BLACK);
g.fillRect(paddleX, 550, 150, 15);
g.fillOval(ballX, ballY, 30, 30);
}
@Override
public void actionPerformed(ActionEvent e) {
ballX = ballX + 10;
ballY = ballY + 10;
System.out.println(ballX + " " + ballY);
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
repaint();
}
}
Ваш совет полезен для AWT, но не подходит для Swing, где 'update()' не следует вызывать, если он не вызван для обновления Look & Feel. –
Также: [Просмотрите изменения] (http://stackoverflow.com/posts/20573439/revisions), чтобы узнать, как создать «упорядоченный список». Пожалуйста, добавьте письмо в верхнем регистре в начале предложений. Также используйте капитал для слова I, аббревиатуры и аббревиатуры, такие как JEE или WAR. Это облегчает людям понимание и помощь. –
Для получения дополнительной информации см. Статью Oracle [Живопись с Swing и AWT] (http://www.oracle.com/technetwork/java/painting-140037.html), чтобы понять, почему они утверждают '' ... для этого причина update() никогда не вызывается в компонентах Swing ... "'. –