[Java]communicatie GUI en klassen

Pagina: 1
Acties:

  • maxjuh
  • Registratie: November 2004
  • Laatst online: 19-03-2025
Het probleem is het volgende. Als ik een applicatie maak hou ik liever de interface gescheiden van de rest van de code. Dit is omdat ik anders gewoon een hele grote klasse krijg waar alle in gebeurd.

Het probleem wat ik nu ondervind is dat er vanuit de interface een methode in een andere klasse word aangeroepen (heb het hier niet over een interface maar een GUI. swing in mijn geval). Deze methode die ik aanroep moet op zijn beurt de tekst in een JLabel wijzigen doormiddel van setText. Ook is het zo dat er in deze methode niet één maar van van meerdere JLabels de tekst moet worden geset. Omdat er in meerdere JLabel de tekst dus gewijzigd moet worden is het naar mijn idee dus niet mogelijk om een argument terug te sturen.

Wat ik heb geprobeerd om dit dan toch werkend te krijgen is vanuit de interface een klasse te maken (dus de klasse die de JLabels moet wijzigen. ik noem deze klasse nu even voor het gemak Woorden) zodat ik de methodes van die klasse kan aanroepen. Ook heb ik in de interface de JLabels protected gemaakt. Wat ik vervolgens doe is in de klasse Woorden een referentie maken naar de interface.

Java:
1
interface.woord.setText("dit werkt dus niet");


woord is dus een attribuut in de interface die ik protected heb gemaakt. Mijn IDE (Eclipse) heeft geen moeite om dit te compilen alleen als ik het zootje ga runnen krijg ik een NullPointerException wat ook logisch is omdat ik wel een referentie heb gemaakt naar de interface maar nooit heb gezegd: interface = new Interface();. Ik dit we doe krijg ik als nog errors. Maar dit wil ik ook helemaal niet omdat er vanuit de main methode in de interface als een object van de klasse word gemaakt.

Dan zou je zeggen stuur vanuit de klasse Woorden het hele zootje aan en dan zou ik de JLabels wel kunnen wijzigen (denk btw dat dit ook niet zal werken omdat je vanuit de main methode in de interface een object van de interface maakt). Maar dit doe ik liever niet en dit probleem heb ik al veel vaker gehad bij wat grotere applicaties die meer klassen had en die ook allemaal tekstvakken moesten wijzigen van de interface en dan werkt die oplossing ook niet meer.

Hoe kan kan ik dit probleem goed aanpakken? (heb er al veel vaker mee te kampen gehad bij iets grotere applicaties)

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 10:08
Google eens naar MVC (Model-View-Controller).

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Je wilt dus Model View Controller implementeren?

  • maxjuh
  • Registratie: November 2004
  • Laatst online: 19-03-2025
Gert schreef op zondag 12 maart 2006 @ 18:17:
Je wilt dus Model View Controller implementeren?
nee... Lees mijn verhaal. Dat was een suggestie van FallenAngel666. Hiervoor moet ik dus wel eerst ff vlink wat research doen neem ik aan om dat aan de praat te krijgen.

  • r5d
  • Registratie: Februari 2002
  • Niet online

r5d

Read more, write less...

maxjuh schreef op zondag 12 maart 2006 @ 17:46:
Hoe kan kan ik dit probleem goed aanpakken? (heb er al veel vaker mee te kampen gehad bij iets grotere applicaties)
Als ik je verhaal lees denk ik ook dat MVC de juiste oplossing is. Maar zo'n ingewikkeld design pattern is het ook weer niet. Zeker niet in java met behulp van de Observer/Observable klassen.

Later betaal je meer, maar dan heb je wel een gratis datalimiet....


  • maxjuh
  • Registratie: November 2004
  • Laatst online: 19-03-2025
Dan gaan we dat maar is een keer bestuderen... ty

[edit]
heb op het forum maar is gezogd naar MVC en zag ook nog een andere oplossing. Dit werkt doormiddel van een pointer mee te geven aan een GUI object. Heb dit nu toegepast maar wil zeker in de toekomst MVC gaan gebruik omdat dit toch sterk word aangeraden en stukken beter is als de andere oplossing.

[ Voor 76% gewijzigd door maxjuh op 12-03-2006 21:58 ]

Pagina: 1