Jeg har oprettet et JLabel som jeg gerne vil have til at bevæge sig x antal pixel hen ad x-aksen når jeg trykker på højre piletast. Samme gælder for resten af piletasterne.
Skal jeg tilføje en keyevent til mit JLabel, og hvis ja hvordan fortæller jeg at det er piletasterne den skal reagere på?
public class Mover extends JFrame implements KeyListener { private JLabel lbl; public Mover() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Move demo"); lbl = new JLabel(); lbl.setText("Test"); lbl.setSize(100, 25); add(lbl); addKeyListener(this); setSize(600, 400); } @Override public void keyPressed(KeyEvent e) { Point p = lbl.getLocation(); if(e.getKeyCode() == KeyEvent.VK_LEFT) { p.x--; } else if(e.getKeyCode() == KeyEvent.VK_RIGHT) { p.x++; } else if(e.getKeyCode() == KeyEvent.VK_UP) { p.y--; } else if(e.getKeyCode() == KeyEvent.VK_DOWN) { p.y++; } lbl.setLocation(p); } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame f = new Mover(); f.setVisible(true); } }); } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.