Ændre panel layout i java

Tags:    java gui

Hej,

Jeg er ved at forsøge at lave et program hvor jeg har en jFrame. Derinde i har jeg et panel, som indeholder en menu og et ekstra panel. Mit spørgsmål er så om det ikke kan lade sig gøre at ændre det ekstra panels content når jeg trykker på mine knapper i menuen ? Man kan jo lave nogle klasser der kun fungerer som panel, og havde så tænkt mig at skifte imellem nogle af dem.

mvh



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Har du overvejet at benytte dig af et tabbedpane i stedet ? .. Hvis du ikke vil have overskrifterne
Med kan du slå dem fra, og så skifte index baseret på dine egne menuer

Her er et link til, hvordan man benytter sig af tabbedpanes i swing
http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html



Hvis du har lavet dit JPanel som en seperat klasse, kan du i dit JFrame gemme denne som en objekt variabel til JFrame klassen. Herefter kan du benytte denne som et objekt, når du i dit JFrame vil interagerer med dit JPanel.

Eksempel
Fold kodeboks ind/udJava kode 

Bemærk at eksemplet er simplifiveret for at vise hvordan det kan gøres. Pointen er at du kan ved at holde dit JPanel i en objekt variabel kalde dens metoder og derved interagerer med den som du har lyst til.

Håber at det var med til at besvare dit spørgsmål :)



Hehe her ses jo et godt eksempel på at et problem, kan have forskellige løsninger :)



Hehe her ses jo et godt eksempel på at et problem, kan have forskellige løsninger :)


Tabbedpane er skam også en rigtig god løsning, den havde jeg faktisk ikke lige tænkt på :) - Den er måske endda bedre :D



ja det kunne være en løsning at bruge tappedPane. Kan bare ikke forstå at det ikke kan lade sig gøre at ændre content i et jPanel mens programmet kører vha. button events f.eks. Altså sætte det = et andet panel eller noget i den stil. Lidt ligesom man kan bruge:

frame.getContentPane().removeAll();
frame.getContentPane().add(new JPanel());

til at ændre et contentPane i et jFrame :)

mvh



t