Avatar billede kobojt Nybegynder
15. februar 2000 - 12:17 Der er 4 kommentarer og
1 løsning

CardLayout

I need to be able to read which card in my cardlayout
I am currently viewing. I have put my card contense inside two panels that have been added to the cardlayout they have in turn been added to an array (two cards total), this works fine. It is in another class(a frame) that I view the cards and switch between them, this also works fine. From a menu I call a method and this is were the problem is. The method has to, based upon which card is currently being viewed, clear all the textfields in the card. My problem is that I can't figure out how to tell which card I'm viewing, calling the first and last methods doesn't work. I need to specificaly check which card is being viewed.
How do I do this ?

Kobojt
Avatar billede gnarf Nybegynder
15. februar 2000 - 13:00 #1
Eeeks...there is no available method built into the cardlayout class that does what you want. You can either try to deduct the information from the toString method, if possible, or you can make your own extension of CardLayout.

Something like the following should work:

class MyCardLayout extends CardLayout {

  public String getCurrentCard() {

      int ncomponents = parent.getComponentCount();
      for (int i = 0 ; i < ncomponents ; i++) {
        Component comp = parent.getComponent(i);
        if (comp.visible) {
            return comp.name;
        }
      }
      return null;
  }
}
Avatar billede kobojt Nybegynder
15. februar 2000 - 13:41 #2
Som det står ovenfor virker det ikke, jeg må også indrømme at jeg ikke helt kan gennemskue præcis hvad der sker.
Vil du uddybe ?

Kobojt
Avatar billede gnarf Nybegynder
15. februar 2000 - 15:12 #3
Hmm...ok, det var måske ikke den simpleste metode der findes. Prøv følgende løsning i stedet for.

Indsæt følgende metode i din kode:

public Component getCurrentPanel(Container container) {
  int ncomponents = container.getComponentCount();
      for (int i = 0 ; i < ncomponents ; i++) {
        Component comp = container.getComponent(i);
        if (comp.isVisible()) {
            return comp;
        }
      }
      return null;
  }
}

Og kald så ovenstående metode med den container som indeholder dit cardlayout som parameter.

this.getCurrentPanel(panelsombrugercardlayout);

Princippet er at løbe en given containers elementer igennem, og finde den component som er "visible".
Avatar billede kobojt Nybegynder
16. februar 2000 - 10:59 #4
Jeg løste selv problemet, jeg havde set mig blind på koden, men jeg vil alligevel gemme dit eksempel.

Kobojt
Avatar billede kobojt Nybegynder
16. februar 2000 - 12:39 #5
Hi Gnarf

Du har her på det sidste besvaret en del af mine spørgsmål. Jeg er for tiden i praktik og arbejder sammen med en medstuderende på et mindre program.
Vi vil gerne tilbyde dig en plads i listen af folk der har hjulpet os (credits).
Du kan skrive en kommentar her eller emaile mig på Kobojt@hotmail.com hvis du er interesseret.

Kobojt
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