I am trying to make a program where a ball moves up continuously when you press space, then begins to move down when you reach a certain point. My method for this is to have a timer, and have a method that does this: When you press space, add 10 y coords every second (using a timer), and if you reach 470 y, then begin to drop 10 y coords. I made a method to hold the keylistener, and am running that method inside the actionPerformed method which is within another class. However, since it is a method, I cannot add my keylistener to my frame in the main method. Does anyone know a fix?
Thanks
main
error line 9
Java Code:
import javax.swing.*;
public class Main {
public Main(){
JFrame frame = new JFrame("Jump");
Jump jump = new Jump();
frame.add(jump);
frame.setSize(600,600);
frame.addKeyListener(jump.k);
MyListener listener = new MyListener(jump);
Timer timer = new Timer(1000,listener);
timer.start();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
mylistener
Java Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyListener implements ActionListener {
private Jump jump;
public MyListener(Jump jump){
this.jump = jump;
}
@Override
public void actionPerformed(ActionEvent e) {
jump.JumpIt();
}
}
Jump class
Java Code:
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Jump extends JComponent {
int xspeed=5;
int yspeed=10;
int figX = 15;
int figY = 510;
int diameter = 60;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillOval(figX,figY,diameter,diameter);
repaint();
}
public void JumpIt(){
KeyListener k = new KeyListener(){
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
int k = e.getKeyCode();
if(k == KeyEvent.VK_SPACE){
figY-=yspeed;
repaint();
if(figY<400){
figY+=yspeed;
repaint();
}
if(figY==510){
yspeed=0;
repaint();
}
repaint();
}
if(k==KeyEvent.VK_D){
figY=figY+10;
}
}
@Override
public void keyReleased(KeyEvent e) {
}
};
}
}
Thanks guys
No comments:
Post a Comment