Hallo,
ich möchte ein image entsprechend der Tastatureingabe bewegen. Das funktioniert auch, solange ich den KeyListener an den Frame hänge.
Auf dem Frame werden später aber noch andere Listener sein, so dass ich einen KeyListener für ein JPanel brauche.
Beim googeln habe ich gesehn, dass man das JPanel focussieren muss:
setFocusTraversalKeysEnabled ( true );
isRequestFocusEnabled();
Nutzt aber nix bei mir.
Listener:
Hat jemand ne Idee?
schon mal vielen Dank!
ich möchte ein image entsprechend der Tastatureingabe bewegen. Das funktioniert auch, solange ich den KeyListener an den Frame hänge.
Auf dem Frame werden später aber noch andere Listener sein, so dass ich einen KeyListener für ein JPanel brauche.
Beim googeln habe ich gesehn, dass man das JPanel focussieren muss:
setFocusTraversalKeysEnabled ( true );
isRequestFocusEnabled();
Nutzt aber nix bei mir.
Code:
class Test extends JPanel
{
BufferedImage bar;
BufferedImage backgr;
static JFrame f;
public Test()
{
setPreferredSize(new Dimension(800, 574));
try {
// if (offImage != null)
// g.drawImage(offImage, 0, 0, this);
bar = ImageIO.read(new File("client.png"));
System.out.println(new File("client.png").exists());
backgr = ImageIO.read(new File("schedule.jpg"));
}
catch(IOException e)
{
System.err.println(e.getMessage());
}
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(backgr, 230, 80, this);
g.drawImage(bar, p1x, p1y, this);
System.out.println("ZEICHNE! "+p1x);
}
public static void main( String args[] ) {
f = new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setSize ( 800, 574 );
JPanel p = new JPanel();
BorderLayout layout = new BorderLayout();
p.setLayout ( layout );
p.add ( new test() );
p.addKeyListener(new Keyboard());
p.setVisible( true );
// System.out.println( "getParent" + p.getParent ());
// p.setFocusTraversalKeysEnabled ( true );
p.isRequestFocusEnabled();
f.getContentPane().add ( p );
f.setVisible( true );
// f.addKeyListener(new Keyboard());
// f.repaint();
}
public static int p1x = 230;
public static int p1y = 80;
}
Listener:
Code:
public class Keyboard implements KeyListener {
String aktion="nix";
public boolean isFocusTraversable() {
return true;
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e) {
int pressed=e.getKeyCode();
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
{
aktion = "Oben";
test.p1x = test.p1x + 5;
System.out.println("WERT X-ACHSE: "+test.p1x);
test.f.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_LEFT)//40)
{
aktion = "Unten";
test.p1x = test.p1x - 5;
System.out.println("WERT X-ACHSE: "+test.p1x);
test.f.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
aktion = "Oben";
test.p1y = test.p1y + 5;
System.out.println("WERT y-ACHSE: "+test.p1y);
test.f.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_UP)
{
aktion = "Unten";
test.p1y = test.p1y - 5;
System.out.println("WERT y-ACHSE: "+test.p1y);
test.f.repaint();
}
}
}
Hat jemand ne Idee?
schon mal vielen Dank!