Avatar billede trp79 Nybegynder
12. juni 2004 - 16:07 Der er 8 kommentarer og
1 løsning

Udskiftning af JPanel

Hejsa
Jeg sidder lige med et lille problem.
Når min applikation starter, så starter den op med et par JPanels. Jeg vil så gerne have det sådan, at når jeg trykker på min knap, så blive jPanel = new jPanelVagtudbud();

Men grafikken opdaterer ikke :( Jeg har prøvet med en jPanel.repaint() men det virker ikke. Er der nogen, der har en ide til, hvad man kan gøre, for at det fungerer?

Mvh
Torben
Avatar billede Slettet bruger
12. juni 2004 - 17:11 #1
prøv med updateUI(), eller kald til validate()-metoden. Du skal også huske at fordi du tildeler en variabel som tidligere er blevet tilføjet til et layout, så bliver layoutet ikke automatisk ændret... du skal altså derefter huske at add'e dit JPanel til din JFrame.

Normalt plejer man også at bruge CardLayout som layoutmanager når man vil skifte mellem Panels (uden at ha' tabs inde i billedet).
Avatar billede _carsten Nybegynder
12. juni 2004 - 17:42 #2
Jeg vil give corholio ret, du dog godt gøre det du vil

Hvis dette er din plan (altså din variabel "jPanel" skal pege på et nyt panel og vises)

  JPanel jPanel = new JPanel();
  getContentPane().add(jPanel);

  // Ved tryk på knap
  jPanel = new jPanelVagtudbud();


Skal det gøres sådan
  JPanel jPanel = new JPanel();
  getContentPane().add(jPanel);

  // Ved tryk på knap
  jPanel = new jPanelVagtudbud();
  getContentPane().remove(jPanel);
  getContentPane().add(jPanel);
  getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen
Avatar billede Slettet bruger
12. juni 2004 - 19:04 #3
det er så sjældent at man finder en fejl i Carsten's kode, så jeg vil lige tillade mig at rette den...

Skal det gøres sådan
  JPanel jPanel = new JPanel();
  getContentPane().add(jPanel);

  // Ved tryk på knap
  getContentPane().remove(jPanel);
  jPanel = new jPanelVagtudbud();
  getContentPane().add(jPanel);
  getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen

Så burde det fungere
Avatar billede _carsten Nybegynder
12. juni 2004 - 20:48 #4
Smukt - corholio, det går jo somme tider lidt for stærkt med copy/paste

Takker !
Avatar billede Slettet bruger
12. juni 2004 - 20:49 #5
velbekomme, jeg kender det kun for godt selv :-)
Avatar billede trp79 Nybegynder
14. juni 2004 - 12:06 #6
Hejsa - så er jeg endelig tilbage...
Det var super! Carsten smider du ikke lige et svar - du bør næsten have pointene. Det var trods alt kun en lille fejl, som corholio fandt.

Fandt iøvrigt ud af, at det var smart at slutte af med en getCintentPane().repaint(), da man ellers kan se resterne af det forrige panel.

Mange tak for hjælpen, mvh
Torben
Avatar billede trp79 Nybegynder
14. juni 2004 - 12:16 #7
Nu hvor jeg har dig carsten, så kan jeg vel ikke få dig til at tage et kig på http://www.eksperten.dk/spm/506944 ? Det er omhandlende jtabel.
Avatar billede _carsten Nybegynder
14. juni 2004 - 17:14 #8
Svar!

Jeg kigger!
Avatar billede trp79 Nybegynder
16. juni 2004 - 17:14 #9
Tak for hjælpen, mvh
Torben
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