i'm making game in java ball moves forward no user control, user can control vertical movement of ball, using , down arrow keys, i'm stuck on adding keylistener class/whatever jframe, through main method. basically, add(keylistener_class/method)
, , java (quite rightly), complains class or method not component. question, then, how supposed add keylistener jframe?
cheers, matt
code:
package org.ultraluminous.vertiball; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.renderinghints; import java.awt.event.keyevent; import java.awt.event.keylistener; import javax.swing.jframe; import javax.swing.jpanel; public class game extends jpanel{ static int x = 0; static int y = 0; static int ys = 0; private static void shift(){ x+=1; y+=ys; } public static void event(keyevent e){ if(e.getkeycode() == keyevent.vk_up){ ys = 1; } if (e.getkeycode() == keyevent.vk_down){ ys = -1; } } public class key{ public void listen() { keylistener listener = new keylistener() { @override public void keytyped(keyevent e) { } @override public void keypressed(keyevent e) { } @override public void keyreleased(keyevent e) { } }; addkeylistener(listener); setfocusable(true); } } @override public void paint(graphics g){ super.paint(g); graphics2d graph = (graphics2d) g; graph.setrenderinghint(renderinghints.key_antialiasing, renderinghints.value_antialias_on); graph.setcolor(color.blue); graph.drawoval(x, y, 50, 50); graph.filloval(x, y, 50, 50); } public static void main (string[] args){ jframe win = new jframe("pong"); game game = new game(); win.add(new game()); //win.add... add what? need add key listener here //but seem unable to. win.setresizable(false); win.setsize(900, 600); win.setdefaultcloseoperation(jframe.exit_on_close); win.setvisible(true); while (true) { shift(); win.repaint(); try { thread.sleep(10); } catch (interruptedexception e){ e.printstacktrace(); } } }
i got work adding keylistener jframe
. alternatively create separate class keylistener , add way (instead of using anonymous inner class). here added:
public static void main (string[] args){ jframe win = new jframe("pong"); game game = new game(); win.add(new game()); win.addkeylistener(new keylistener() { @override public void keytyped(keyevent e) { } @override public void keypressed(keyevent e) { if(e.getkeycode() == keyevent.vk_up){ ys = -1; } if (e.getkeycode() == keyevent.vk_down){ ys = 1; } } @override public void keyreleased(keyevent e) { } }); win.setresizable(false); win.setsize(900, 600); win.setdefaultcloseoperation(jframe.exit_on_close); win.setvisible(true); while (true) { shift(); win.repaint(); try { thread.sleep(10); } catch (interruptedexception e){ e.printstacktrace(); } } } }
Comments
Post a Comment