Avatar billede netrotten Nybegynder
12. juni 2002 - 12:26 Der er 5 kommentarer

JTabbedPane-"lort"

Er der nogle der kan hjælpe - inden jeg går ud af mit gode skind!!!!!!!
Jeg anvende JTabbedPane til at oprette faneblade! Hver faneblad indeholder panel-objekter instantieret fra en og samme panel-klasse!  JTabbedPane har tilknyttet en mouseOnClick-event som skal sørger for at opdater diverse felter i panel-objektet!
Til dette formål prøver jeg at anvende JTabbedPane´s getComponentAt(selected faneindex)....men den holder/returner/opdatere ALTID den sidste oprettede faneblads panel-objektet !!!???!!!
Jeg har prøvet SNYDE ved at gemme referencerne på de oprettet panel-objekter...for i sidste øjeblik at indsætte given ref. på aktiveret faneblad ved setComponentAt(selected faneindex) - UDEN HELD!!
Jeg har løbende REPAINTET JTabbedPane - UDEN HELD!!
STORT SET har jeg forsøgt at anvende alle JTabbedPane metoder i yderst kreative konstellationer - UDEN HELD!!

Så nu jeg er på grådens rad!!! HJÆLP MIG!
Hvordan får jeg fat på mine panel på de enkelte faneblade???
Avatar billede aslan Nybegynder
12. juni 2002 - 13:23 #1
hehe... lad os lige se noget kode tak!
Avatar billede carstenknudsen Nybegynder
12. juni 2002 - 13:34 #2
Du burde kunne få antallet af tabs med
getTabCount() og så burde du kunne få
de enkelte komponenter ud med getComponentAt(int).
Det siger du ikke virker?
Avatar billede netrotten Nybegynder
12. juni 2002 - 14:14 #3
Her er noget kode......
//metoden der sætter/registrere nye indkommende!!!
protected synchronized String getFejlLog(int guiId)
        throws InterruptedException {

        while (logFejl.isEmpty()) {
            System.out.println("Controller sætter tråd til WAIT!");
            wait();
        }
       
        String request = (String)logFejl.elementAt(0);
        StringTokenizer st = new StringTokenizer(request, "-");//indbygget java-klasse som opdeler en streng i token
       
        int id=Integer.parseInt(st.nextToken());;
        String type=st.nextToken();
        String indhold=st.nextToken();
       
        int index=faneBlad.indexOfTab("VM_"+id);
   
        if(index==-1)
            {
                    OversigtVMPanel oversigtVMPanel = new OversigtVMPanel(id);
                faneBlad.addTab("VM_"+id,oversigtVMPanel);
                List temp = oversigtVMPanel .getLogList();
                temp.add(id +": "+type+" " + indhold);
               
                faneBlad.setSelectedIndex(0);
            }
        else
            {
                List temp = ((OversigtVMPanel)faneBlad.getComponentAt(index)).getLogList();
                temp.add(id +": "+type+" " + indhold);
                faneBlad.setSelectedIndex(0);
            }
        logFejl.removeElementAt(0);
        return request ;
    }
   
   
    /****************************************************************
    *  private ActionPerformed
    *****************************************************************/
 
//brugerens mulig interaktion med GUI!!!!!
      private void faneBlad_mouseClicked(MouseEvent e) {
   
        int faneIndex = faneBlad.getSelectedIndex();
       
        if(faneIndex>0)
            {
            OversigtVMPanel ovp = ((OversigtVMPanel)faneBlad.getComponentAt(faneIndex));
       
            int guiIp=ovp.getGuiIp();
            Object[] statusFelter = ovp.getStatusFelter();
               
               
            statusKlient = new StatusKlient(statusFelter);
              statusKlient.open(guiIp);
              statusKlient.start();
            }
      }
}

...dette er tager ud af en større sammenhang..håber der dog giver mening!
Avatar billede aslan Nybegynder
12. juni 2002 - 14:23 #4
Jeg bruger dette og det virker:

              if( e.getSource() == visAlle )
              {
                  hentOpslag.visRes();
                  hentPane.setSelectedIndex(3);

              }
Avatar billede netrotten Nybegynder
12. juni 2002 - 14:54 #5
Jeg har også prøvet det der ligner dit "aslan"...med at tvinge den til at get-og derefter setSelectedIndex - der hvor jeg vil have den.
MEN den opdater altid sidstkommende Component på sidst tilføjet faneblad...og det er jo noget skidt, når brugeren ved sin aktion er på et andet faneblad end den den opdater(sidste faneblad = skjult af valgte)!

Er der andre gode ideer til evt. løsningsforslag???
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