Avatar billede kkaen Nybegynder
06. januar 2011 - 15:57 Der er 2 kommentarer og
1 løsning

Dynamisk indsætte jLabel i jLayeredPane

Jeg har et jPanel, hvorpå jeg viser et billede. Så har jeg et jLayeredPane, hvorpå jeg har nogle jLabels. Disse jLabels kan godt vises.

Problemmet opstår, når kalder nogle metoder gennem en actionlistener. Så kalder jeg først jLayeredPane.removeAll(), hvorefter jeg laver nogle jLabels, og add'er dem til jLayeredPane. Når jeg placerer den over et sted i det føromtalte billede, hvor der er gennemsigtig baggrund, så kan jLabellen fint vises. Men hvis jeg placerer jLabelen over et sted på billedet, hvor der er noget grafik, så kommer det ikke frem.

Det undrer mig, eftersom jLabels er indsat i jLayeredPane via jLayeredPane.moveToFront(jLabel);
Så burde jLayeredPane da under alle omstændigheder blive tegnet øverst på skærmbilledet ?

Hvad kan fejlen så skyldes? Kan det være noget med, at initComponents() eller andet bliver kørt efterfølgende? Men det kan jo ikke passe, når vi medregner "z-index".

Jeg har prøvet forskellige løsningsforslag, men de virker ikke. Desuden undrer det mig meget, at jLabellen bliver tegnet, hvis den blot befinder sig på et bestemt sted på skærmen, men ikke på et andet - når jLabellen eksisterer i jLayeredPane.DRAG_LAYER (.moveToFront()).

Har i samme probelmer med at gennemskue dette?
Avatar billede DFH86 Nybegynder
13. januar 2011 - 13:48 #1
Har du prøvet at wrappe din JLabel ind i en invokeLater metode, der hvor du tegner den ?

Et eksempel kunne se således ud:

SwingUtilities.invokeLater(new Runnable()
    {
      public void run()
      {
        JLabel.setText("text");
      }
    });
Avatar billede kkaen Nybegynder
13. januar 2011 - 17:41 #2
Næh, det har jeg ikke. Mon det gør nogen forskel? Det er vel et forsøg værd :-)
Avatar billede kkaen Nybegynder
14. juni 2011 - 13:00 #3
lukkes.
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