26. januar 2005 - 12:23Der er
14 kommentarer og 1 løsning
Problemer med et JComponent
Hej,
jeg har en klasse: public class DrawArea extends JComponent implements MouseInputListener, KeyListener mit problem er at jeg kan ikke komme til at lytte til tastaturet, musen er der ingen problemer med. I klassens konstruktor har jeg skrevet: public DrawArea() { ... addMouseListener(this); addMouseMotionListener(this); addKeyListener(this); ... } De tre funktioner man skal have med for at overholde KeyListener interfacet ser sådan her ud:
public void keyPressed(KeyEvent e) { System.out.println("halløj"); switch(e.getKeyCode()){ case KeyEvent.VK_SPACE : vertical = false; } repaint(); }
Som det fremgår af koden er det "space" jeg gerne vil lytte til, men lige meget hvad jeg trykker på sker der intet, den burde i det mindste skrive "halløj" ud.
På forhånd tak for hjælpen
MMK
public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { }
Hvad indeholder DrawArea? Hvis du f.eks tar tilføjet en JPanel i din DrawArea så kommer java ikke at fortelle din keyListener hvis focus er i din JPanel og ikke i selve DrawArea.
Det eneste jeg har i vinduet er JComponent, ingen knapper eller noget andet. Jeg har en JFrame og det eneste jeg har tilføjet til dens ContentPane er DrawDemo der extend'er JComponent. Jeg har prøvet med requestFocus() men det virker ikke, heller ikke requestFocusInWindow(); som snoop foreslog virker.
DrawArea Area = new DrawArea(); container.add(Area);
//Align the left edges of the components. Area.setAlignmentX(Component.LEFT_ALIGNMENT); return Area; } ------------------------------- //Set up the content pane. DrawDemo controller = new DrawDemo(); DrawArea area = controller.buildUI(frame.getContentPane());
//Display the window. frame.pack(); frame.setVisible(true); area.requestFocusInWindow(); -------------------------------
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.