so das ist mein Quellcode, ich versuche, Stick Mann bewegt sich so zuerst, ich habe versucht, Kopf bewegen zu machen. es funktioniert, aber das Problem ist, dass die Vergangenheit Bewegung und die Reccentt Bewegung zusammenhalten, so geht es wie dieses OOOOOOOOOOO, wenn es so gehen soll OWie aktualisiere ich ein neues Bild auf JFrame? (Ich habe alles versucht, aber es hat nicht funktioniert)
Ich versuchte repaint() validate() updateUI() aber es noch didn 't Arbeit
irgendeine Idee?
package JamesTestPackage;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class StickmanUI extends JPanel implements ActionListener, KeyListener{
Timer t = new Timer(1,this);
int x=180;
int x_vel = 0;
int y_vel = 0;
public StickmanUI(){
t.start();
addKeyListener(this);
setFocusable(true);
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(5));
g2.drawLine(200, 50, 200, 100); // body
g2.drawLine(200, 100, 220, 150); // right leg
g2.drawLine(200, 100, 180, 150); // left leg
g2.drawLine(200, 75, 170, 100); //left arm
g2.drawLine(200, 75, 230, 100); //right arm
g2.drawOval(x, 10, 40, 40); // head
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
x= x + x_vel;
repaint();
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
x_vel = 1;
else if(arg0.getKeyCode() == KeyEvent.VK_LEFT)
x_vel = -1;
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
x_vel =0;
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
danke! es funktioniert jetzt ! aber noch eine Frage, was macht super.paintComponent (g); machen? Ich habe diese immer gesehen, aber nie wirklich verstanden, was es tut –