Avatar billede jonas82 Nybegynder
28. februar 2006 - 14:24 Der er 4 kommentarer og
1 løsning

Tilgå swing element fra anden klasse

Jeg har et JDesktopPane som får tilføjet en JInternalFrame(eventListForm) hvordan får jeg så den klasse(eventListForm) til at putte en ny JInternalFrame på DesktopPanen. Jeg har jo ikke adgang til DesktopPane instansen?
Jeg har i øvrigt samme problem i andre sammenhænge også. I C# bruger man så vidt jeg husker delegates, men hvad med Java?

EventListForm eventListForm = new EventListForm();
eventListForm.setLocation(20, 20);
eventListForm.setVisible(true);
desktopPane.add(eventListForm);
Avatar billede mikkelbm Nybegynder
28. februar 2006 - 21:09 #1
Du kan sende instansen af din JDesktopPane med over i constructoren på eventListForm. Eller pakke den bag et interface med en add-metode, som nok modsvarer delegates i C#, og igen sende den med i constructoren.
Avatar billede jonas82 Nybegynder
01. marts 2006 - 12:06 #2
Ok, er det måden at gøre det på i Java? Giver det ikke nogen problemer hvis UI opdateres fra en anden tråd?
Avatar billede mikkelbm Nybegynder
01. marts 2006 - 12:16 #3
Hvis du kalder noget gui fra en anden tråd kan du bare kalde:

Runnable doSomething = new Runnable()
{
    public void run()
    {
        // Opdatér din gui
    }
};

SwingUtilities.invokeLater(doSomething);


Hvilket jeg vil mene modsvarer C#'s Invoke på en Control.
Avatar billede jonas82 Nybegynder
01. marts 2006 - 13:28 #4
Tak. Du må gerne svare.
Avatar billede mikkelbm Nybegynder
01. marts 2006 - 13:35 #5
Det gør jeg...
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