[JAVA] Gui Event opzet

Pagina: 1
Acties:

  • xos
  • Registratie: Januari 2002
  • Laatst online: 26-03 10:21
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 :)

  • momania
  • Registratie: Mei 2000
  • Laatst online: 14:22

momania

iPhone 30! Bam!

Verschillende opties zijn mogenlijk, afhankelijk van een aantal zaken als bijv, groote van applicatie, etc..

Een goed begin voor jou zou dit zijn: [google=swing,mvc]

Het MVC pattern is het de meest gebruikelijke oplossing voor jou :)

Neem je whisky mee, is het te weinig... *zucht*


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 15:38

Robtimus

me Robtimus no like you

Het is hoe dan ook een goed idee om de engine en (G)UI te scheiden. Wil je dan de (G)UI vervangen hoef je geen functionele zaken te vervangen, alleen maar de aanroep daarvan veranderen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • xos
  • Registratie: Januari 2002
  • Laatst online: 26-03 10:21
Sorrie voor de late reactie, ik had ineens een vergeten familie afspraakje :X
momania schreef op vrijdag 14 oktober 2005 @ 11:37:
Verschillende opties zijn mogenlijk, afhankelijk van een aantal zaken als bijv, groote van applicatie, etc..

Een goed begin voor jou zou dit zijn: [google=swing,mvc]

Het MVC pattern is het de meest gebruikelijke oplossing voor jou :)
Bedankt, dit lijkt idd een handige manier om dit soort problemen aan te pakken. Ik heb het boek "Design patterns explained" gelezen en ben wel enthausiast geworden over design patterns.
IceManX schreef op vrijdag 14 oktober 2005 @ 14:22:
Het is hoe dan ook een goed idee om de engine en (G)UI te scheiden. Wil je dan de (G)UI vervangen hoef je geen functionele zaken te vervangen, alleen maar de aanroep daarvan veranderen.
Die functionele was ik van plan om te doen in CalculatorEngine. Een eerste begin richting het MVC pattern was dus al gezet :)

  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
Mocht je nog van plan zijn een iets complexere, of juist simpele GUI te bouwen, kijk dan ook eens hier na:

https://tablelayout.dev.java.net/

Ik gebruik het al een tijdje, en het is echt brilliant! :)

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
bodiam schreef op zondag 16 oktober 2005 @ 20:05:
Mocht je nog van plan zijn een iets complexere, of juist simpele GUI te bouwen, kijk dan ook eens hier na:

https://tablelayout.dev.java.net/

Ik gebruik het al een tijdje, en het is echt brilliant! :)
Daar ben ik het volledig mee eens :) .

If I can't fix it, it ain't broken.


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 15:38

Robtimus

me Robtimus no like you

Lijkt qua opzet wel een beetje op JGoodies Forms; de enige andere layout manager die ik vaak gebruik is BorderLayout (vaak allebei in combinatie). Ook krachtig maar simpel.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 08:30

Thyzz

-=leeg=-

Wat heeft de layout, te maken met MVC?

Wat ik en volgens mij de topicstarter veel interresanter vinden is hoe je netjes de events van de GUI laat samenwerken met de onderliggende laag. Zonder functionaliteit in je GUI te moeten creeren.
En dan nog liever hoe je events vanuit een onderliggende laag weer in de GUI krijgt.

[ Voor 3% gewijzigd door Thyzz op 16-10-2005 21:43 ]

5325wp

Pagina: 1