Toon posts:

[java] KeyListener op JWindow werkt weer eens niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een JWindow en daar had ik graag Keyevents van opgevangen. Ik heb al vanalles geprobeerd, maar door de beruchte focus problemen van het JWindow wil het maar niet lukken...

Ik heb het op de standaard manier met een KeyAdapter geprobeerd, maar hiermee komen de events niet door (op een JFrame werkt het overigens wel, dus het ligt niet aan de adapter). Ook een requestFocus() op de JWindow en op z'n contentPane helpen niet. JWindow.enableEvents(long) heb ik ook al geprobeerd, maar dat werkte dus ook niet.

Ik heb ook nog wat zitten klooien met de Toolkit.addAWTEventListener(bla, bla), maar ook via de toolkit komen de events niet door... Ik kan jammergenoeg geen JFrame gebruiken, dus als iemand een oplossing weet voor mijn eigenwijze JWindow, dan hoor ik het graag :)


[edit]
Are you using jdk1.4? The KeyListener in jdk1.4 is broken as of now. The only way to get it to work is to add a button or another component to your JFrame, and then have it request foccus. Use 1.3.1 if you want it to work without doing this.
Lang leve sun... |:(


Weet iemand trouwens een WERKENDE manier om ALLE events binnen een applicatie op te vangen (ben erachter dat dit eigenlijk meer is wat ik nodig heb)? Dat zou moeten gaan door een AWTEventListener aan je toolkit toe te voegen, maar dat krijg ik niet aan de praat en aan de reacties op het forum van java.Sun te zien ben ik niet de enige...

  • Donderwolk
  • Registratie: Januari 2002
  • Laatst online: 11-06 11:16
Tja je zou alle eventlisteners een voor een aan je applicatie kunnen hangen.

dus toevoegen aan je klasse: implements KeyListener, MouseListener, MouseMotionListener etc; (allemaal in java.awt.event.* )

en dan de methoden hiervan overriden.

Pwnd


  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Is denk ik gewoon een bug in java want de events komen gewoon niet aan in een JWindow of een Window. MouseEvents werken wel, en in een JFrame of JDialog komen de events wel aan.

  • VinnieM
  • Registratie: September 1999
  • Laatst online: 29-11-2024
Hmm..gebruik dan een JFrame en zet de decoraties uit, dan heb je hetzelfde effect als een JWindow, maar met een werkende KeyListener :)

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
workaround? :

import javax.swing.*;
import java.awt.event.*;

public class EventWindow extends JDialog implements KeyListener
{
public EventWindow()
{ this.setUndecorated(true);
this.setSize(320,200);
this.addKeyListener( this );
this.setVisible(true);
}

public static void main(String args[])
{ EventWindow e = new EventWindow();
}

public void keyPressed(KeyEvent e)
{ System.out.println("TYPE!"); }

public void keyTyped(KeyEvent e)
{}

public void keyReleased(KeyEvent e)
{}
}