Hej!
Sitter och ska börja med en uppgift till skolan där vi ska utveckla ett javabaserat gränssnitt där man ska kunna göra x antal saker mot en databas, det handlar om lägga in information, söka efter information, eller visa information. Låt oss säga att jag ska ha 6 olika menyalternativ i mitt program. Nu undrar jag vilket som är ett smidigt sätt att strukturera upp det på, vad jag kan använda för att inte få en enda stor hög med spaghettikod.
Jag skulle vilja ha varje av dessa sex alternativ i någon egen form av "kontroll" så att jag får ett litet mer strukturerat program, lättare att hålla koll på etc. Vad har jag för valmöjligheter?
Som allmän regel brukar jag alltid låta de stora delarna av ett användargränssnitt kapslas in i en JPanel, som man sedan bestyckar med metoder för att få den att bete sig som man vill. Fördelen med det är att man sedan kan byta deras omgivning på ett smidigt sätt, t.ex. lägga dem i en JTabbedPane, låta dem växlas mellan i en CardLayout, använda någon enskild av dem i en applet osv. Då får man sina trevliga, strukturerade och lättanvända kontroller :)
Tack, kan man "klistra" in en JPanel i en frame ? Tänkte ha en frame som själva applikationen och sedan dunka in de olika "komponenterna" i denna frame beroende på vad i menyn man valt.
Du menar, byta ut innehållet i framen under körning? Visst, inga problem. Finns några olika sätt att lösa det på, typ att använda en CardLayout i JFramens contentPane, eller så tar du en JTabbedPane.
Ok tack, så då kan jag alltså ha flera olika Jpanels i en egen fil för varje så att säga, och sedan merga in dem i min frame som kör en cardlayout. Någon URL om hur man gå till väga för själva sättet man får in en annan panel i den aktuella framen?
Ta en titt i API'et. JFrame.setContentPane( Container pane ) säger det. Du kan alltså med metoden setContentPane() ändra contentPane'n till valfri JPanel.
JFrame myFrame = new JFrame( "Fönster" );
...
JPanel myPanel = new JPanel();
...
myFrame.setContentPane( myPanel );
Tack spin, Jo det där förstår jag, om jag förklarar lite utförligare kanske det är lättare att förstå vad jag menar, är lite snurrig för tillfället.
Jag har låt oss säga 4 java filer
-myAppliaction.java
main metod som kör en instans av myFrame
-myFrame.java
Min frame med en jMenuBar (2 menuitems) och en cardlayout
-myPanel1.java
En panel med dvs kontroller
-myPanel2.java
En annan panel med dvs kontroller
Vad jag vill är att när man klickar på något i menyn i framen ska dens actionslistener anropa tex en metod som klistrar in myPanel2.java eller myPanel1.java i framen
Detta kanske inte är ett smart sätt att lösa det hela på eller?