Avatar billede adflicto Nybegynder
17. januar 2007 - 18:16 Der er 6 kommentarer og
1 løsning

Swing program arkitektur

Hej

Jeg har i de sidste 3 uger bygget et swing program. Fordi det er første gang, har jeg overvejende brugt statiske metoder og ikke udnyttet javas objektorienterede abstraktionsniveau. Nu sidder jeg i de sidste dage og skal reflektere over projektet og evt. skrive, hvordan jeg har gjort forkert og hvordan det ellers kunne have set ud.
Det jeg egentlig søger er, hvordan man opbygger et GUI program, hvor man udnytter den objektorienterede del.

Hvis man nu tager udgangspunkt i det eksempel jeg sidder med så skal der bygges et vindue, der har en JMenu og et indhold nedenunder i form af et JPanel. Dette JPanel kan så variere når der fra brugerens sidder trykkes på et menu punkt.

Hvordan ville man rent arkitektonisk bygge et sådant program?

Det jeg bliver i tvivl om er hvordan events skal handles og hvordan hvert JPanel skal bygges.
Avatar billede arne_v Ekspert
17. januar 2007 - 18:37 #1
Det helt basale maa jo vaere at du laver en klasse som extender JFrame og som
har ikke statiske metoder og som evt. ogsaa bruger nogle andre af dine
klasser der extender Jetellerandet.

Mere avanceret vat det vel oplagt med noget JList/JTable og komme ind paa noget MVC.
Avatar billede jime_boy Nybegynder
17. januar 2007 - 18:38 #2
Overordnet ville jeg opbygge programmet i 3 lag. (grænseflade, funktionalitet og modellag)

Grænseflade
Jeg ville nok kigge på hvilke ting der skal ligge fast hele tiden i winduet og implementere det i den klasse. Menu'er og panel'er som variere alt efter hvor man har klikket mm. ville jeg lave i enten selvstændige klasser, eller en super klasse med underklasser til hvad enten det skal vise.

Event ville jeg håndtere ved tilstandsskifte på de forskellige objekter. Det vil sige at en person har klikket på en ny type visning i programmet og den overordnede GUI klasse skifter tilstand fordi at den skal ændre sin menu.

Funktionalitet
Yderligere går jeg ud fra at programmet har noget funktionalitet, dette ville jeg opdele alt efter hvormeget funktionalitet der er og om man kan lave noget former for grupperinger. (dette er for at en ny progammør hurtigt vil kunne sætte sig ind i programmet)

Model
model laget skal indeholde de data som der arbejdes med i programmet. eks. er det en poker applikation skal der være en kort-klasse, bord, hånd mm.

Et program har altid nogle krav som det skal leve op til, evt. stabilitet, hastighed, sikkerhed mm. Der mener jeg også at du skal vurdere om din arkitektur lever op til de krav der er sat.

Er ikke sikker på om det hjælper dig, men det var mine umiddelbare tanker!
Avatar billede adflicto Nybegynder
17. januar 2007 - 19:33 #3
altså ... menuen i programmet ændrer sig aldrig. Det er en JMenu der altid er synlig og har de samme elementer som endten er synlige/ikke synlige eller aktiveret/deaktiveret.

Så jeg tænkte på at opbygge det sådan her:
MainFrame (extender JFrame) har (dvs. som objekt felt)
-et panel med et bestemt layout
-en menu (en klasse der extender JMenuBar, som jeg laver)
-et currentPanel JPanel (sættes når indholdet skal skiftes)

dvs. der i constructoren for MainFrame står
{
this.menu = new Menu();
}

og der i constructoren for Menu står
{
//f.eks.
this.menuHead = new JMenu("Menu1");
this.menuPunkt1 = new JMenuItem("punkt1");
this.menuPunkt2 = new JMenuItem("punkt2");
this.menuPunkt3 = new JMenuItem("punkt3");
this.menuHead.add(menuPunkt1);
this.menuHead.add(menuPunkt2);
this.menuHead.add(menuPunkt3);
}

Men hvordan skal jeg så håndtere de events der kommer når brugeren trykker på menu punkterne. Indtil videre har jeg bare oprettet en actionlistener på hvert objekt og lavet en ny underklasse for hver listener. Men er det smart? Kan man ikke lave noget med, at der er én klasse Eventet bliver smidt videre til?
Og hvilket af de nævnte objekter skal "have" denne controller...

Mangler objektorienterethed!
Avatar billede arne_v Ekspert
18. januar 2007 - 01:06 #4
du kan tilføje den samme action listener til flere komponenter og så
teste på source i den
Avatar billede arne_v Ekspert
17. marts 2007 - 21:08 #5
Tid at få afsluttet her ?
Avatar billede adflicto Nybegynder
18. marts 2007 - 00:23 #6
emnet er for mig stadig uafklaret, men i sidste ende tror jeg at når der skal håndteres events med gui, vil det ret hurtigt blive rodet lige meget hvad man gør.
jime boy smid et svar, så får du das points
Avatar billede jime_boy Nybegynder
18. marts 2007 - 09:32 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester