Ik ben bezig met een java opdracht voor school en ik vroeg mij af wat een nette oplossing is om een GUI op te zetten. De opdracht is zo'n 13 in een dozijn standaard rekenmachine te maken. Het probleem is niet dat ik geen idee heb hoe ik het werkend moet maken maar hoe ik het een beetje netjes kan opzetten zodat wat ingewikkeldere GUI's dadelijk ook geen probleem zijn.
Stel ik heb de volgende 3 JPanels, display, numPad en actionPad (ter info: +, -, x, /, =) en een algemene classe Calculator (extends JFrame) welke een CalculatorEngine gebruikt voor zijn berekeningen. Nu zijn er verschillende mogelijkheden om een event af te vangen en te verwerken.
Optie 1:
In de class Calculator kan ik een inner class NumPressed maken (implements ActionListener) en deze in de constructor van numPad meegeven. Nadeel van deze methode is dat alle buttons dan dezelfde NumPressed object gebruiken wat in dit geval opzich niet zo'n probleem is. Deze constructie voor actionPad is wel een probleem omdat er verschillende actie worden uitgevoerd voor elke button. Dan moet ik wanneer ik een nieuwe button in de toekomst wil toevoegen met een switch of iets dergelijks dit extra event verwerken.
Optie 2:
Een reference van Calculator meegeven aan de verschillende JPanels. En in elke JPanel inner classes welke mbv die backreference functies aanroepen op Calculator. Calculator roept dan de juiste functies van de CalculatorEngine en andere JPanels aan. Vind ik persoonlijk een beetje lelijk aangezien dan dingen die weinig met elkaar te maken hebben door elkaar heen lopen.
Optie n:
Er zijn vast wel meer methodes te bedenken. Ik was nu benieuwd wat in de praktijk als een nette oplossing wordt gebruikt.
Alvast bedankt
Stel ik heb de volgende 3 JPanels, display, numPad en actionPad (ter info: +, -, x, /, =) en een algemene classe Calculator (extends JFrame) welke een CalculatorEngine gebruikt voor zijn berekeningen. Nu zijn er verschillende mogelijkheden om een event af te vangen en te verwerken.
Optie 1:
In de class Calculator kan ik een inner class NumPressed maken (implements ActionListener) en deze in de constructor van numPad meegeven. Nadeel van deze methode is dat alle buttons dan dezelfde NumPressed object gebruiken wat in dit geval opzich niet zo'n probleem is. Deze constructie voor actionPad is wel een probleem omdat er verschillende actie worden uitgevoerd voor elke button. Dan moet ik wanneer ik een nieuwe button in de toekomst wil toevoegen met een switch of iets dergelijks dit extra event verwerken.
Optie 2:
Een reference van Calculator meegeven aan de verschillende JPanels. En in elke JPanel inner classes welke mbv die backreference functies aanroepen op Calculator. Calculator roept dan de juiste functies van de CalculatorEngine en andere JPanels aan. Vind ik persoonlijk een beetje lelijk aangezien dan dingen die weinig met elkaar te maken hebben door elkaar heen lopen.
Optie n:
Er zijn vast wel meer methodes te bedenken. Ik was nu benieuwd wat in de praktijk als een nette oplossing wordt gebruikt.
Alvast bedankt