Friday, January 31, 2014

How can I access this keylistener if it is within a method?
































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