StackOverflowError - Keyboardlistener

Tags:    java

Hellow everyone!

Min ellers fantastiske, ultimative, guddommelige lommeregner, virker fantastisk, men får fejl når jeg tilføjer min KeyboardListener til min JLabel..

-1000 Kroner til den der svarer indenfor et et hemmeligt tidsrum!

Main class
Fold kodeboks ind/udJava kode 


Tastatur class
Fold kodeboks ind/udJava kode 




Indlæg senest redigeret d. 26.09.2012 19:54 af Bruger #16945
8 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Du har uendelig rekursion. Din Main klasse konstruerer et objekt af Tastatur klassen. Din Tastatur klasse konstruerer et nyt objekt af Main klassen. Den nye Main klasse konstruerer et nyt objekt af Tastatur klassen osv..

Synderen ligger i din Tastatur-klasse:
Fold kodeboks ind/udJava kode 


EDIT, tilføjelse:

Det du kan gøre i stedet for at din Tastatur-klasse tager et Main objekt som argument i dens konstruktor. I stedet har du:
Fold kodeboks ind/udJava kode 


Så for at lave tastatur-objektet skal du nu bruge:
Fold kodeboks ind/udJava kode 


På den måde får du bygget en reference til din Main-klasse (brugerflade) ind i din Tastatur-klase. Via. den reference kan dit Tastatur manipulere brugerfladen.



Indlæg senest redigeret d. 26.09.2012 20:06 af Bruger #14645
Ændre din Main metode til følgende:

Fold kodeboks ind/udJava kode 


Her har jeg fået din lommeregner til at virke på min pc :)



Som en static øverst i din Main klasse.

Tja, man kan have en keylistener til forskellige ting, det er det geniale ved dem :)

Men i dit tilfælde ville jeg nok tilføje det til JFramen i stedet for JLabel, da du jo er interesseret i alle klik, der kommer til vinduet :)



Du har uendelig rekursion. Din Main klasse konstruerer et objekt af Tastatur klassen. Din Tastatur klasse konstruerer et nyt objekt af Main klassen. Den nye Main klasse konstruerer et nyt objekt af Tastatur klassen osv..

Synderen ligger i din Tastatur-klasse:
Fold kodeboks ind/udJava kode 


EDIT, tilføjelse:

Det du kan gøre i stedet for at din Tastatur-klasse tager et Main objekt som argument i dens konstruktor. I stedet har du:
Fold kodeboks ind/udJava kode 


Så for at lave tastatur-objektet skal du nu bruge:
Fold kodeboks ind/udJava kode 


På den måde får du bygget en reference til din Main-klasse (brugerflade) ind i din Tastatur-klase. Via. den reference kan dit Tastatur manipulere brugerfladen.


Mange tak! - Nu kører min kode da!

- Men min KeyboardListener virker ikke >.<

Når jeg på keyboardet skriver noget, sker der ingenting >.>



Indlæg senest redigeret d. 26.09.2012 20:22 af Bruger #16945
Ændre din Main metode til følgende:

Fold kodeboks ind/udJava kode 


Her har jeg fået din lommeregner til at virke på min pc :)


Troede at man skulle add'e KeyListener til JLabel og ikke JFrame?

- Du definere tastatur i main metoden, men hvor erklære du den?



THIS IS BULLCRAP!? Eller min hjerne er ihvertfald..

Fold kodeboks ind/udJava kode 


Fold kodeboks ind/udJava kode 


Hvad er der galt med min kode? - Kan du ikke sende mig hele din kode?



Indlæg senest redigeret d. 26.09.2012 21:42 af Bruger #16945
Jeps.. Men det må blive imorgen, for jeg sidder lige ved den forkerte computer :)



Okay :- D

EDIT

Mit problem var at jeg ikke havde sat JFrame til at være focusable.
- Nu virker min kode, men mange tak for jeres hjælp!



Indlæg senest redigeret d. 27.09.2012 12:33 af Bruger #16945
t