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.
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)
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)