Avatar billede luctatic Nybegynder
17. marts 2003 - 15:48 Der er 11 kommentarer og
1 løsning

Frame bliver ikke vist

Scenarie - en frame (frame1) viser en anden frame (frame2, surprise) med teksten "logger ind, vent venligst", og starter derefter loginproceduren.

Problem - frame2 bliver vist, men uden indhold. Det virker som om den ikke så CPU tid til at vise indholdet efter frame2.show() er kaldt, da main-tråden har rigeligt at gøre med loginproceduren.

Man bliver vel ikke nød til at lave en ny lille tråd der skal køre i kort tid for at vise frame2? Der må være en nemmere måde at gøre dette.
Avatar billede riversen Nybegynder
17. marts 2003 - 16:39 #1
du skal tilføje indholdet før du kalder show()...gør du det?
Avatar billede luctatic Nybegynder
17. marts 2003 - 16:58 #2
Ja ja - indholdet bliver tilføjet i konstruktøren. Virker også fint hvis jeg prøver en test af på frame2.
Avatar billede _carsten Nybegynder
17. marts 2003 - 17:24 #3
Kunne dette måske bruges ?


import javax.swing.JFrame;
import javax.swing.JLabel;

public class Frame1 extends javax.swing.JFrame {
    public Frame1() {
        this.setSize(400,400);
        this.setTitle("Frame 1");
        show();
       
        Frame2 frame2 = new Frame2();
        frame2.setLoginText();

        // loginprocedure();
    }
   
    public static void main(String[] args) {
        new Frame1();
    }
}

class Frame2 extends javax.swing.JFrame{
private javax.swing.JLabel jl;

    public Frame2(){
        this.setSize(300,300);
        this.setTitle("Frame 2");
        java.awt.Container c = getContentPane();
        c.setLayout( new java.awt.FlowLayout());
       
        jl = new javax.swing.JLabel();
        c.add(jl);
        show();
    }
   
    public void setLoginText() {
        jl.setText("logger ind, vent venligts");
    } 
}
Avatar billede luctatic Nybegynder
17. marts 2003 - 17:37 #4
Det er noget lignende det jeg gør. Men det ta'r jo pænt kort tid at oprette de to objekter, hvorefter den går direkte ind i login-delen som stopper den helt i de ca. 5-10 secs det ta'r at lave et SecureRemoteObject til SSLRMI. Lader til vi må have en ny tråd igang for det det virker.
Avatar billede _carsten Nybegynder
17. marts 2003 - 17:46 #5
Hvad så hvis man ændrer til følgende

I Frame1:    if(frame2.setLoginText) {}
         
Frame2:      public boolean setLoginText() {
              jl.setText("logger ind, vent venligts");
            }
Avatar billede luctatic Nybegynder
17. marts 2003 - 17:59 #6
Hmmm, skulle vel ikke gøre megen forskel. Den når jo slet ikke at vise indholdet af framen før den er gået videre.
Avatar billede _carsten Nybegynder
17. marts 2003 - 18:13 #7
Måske ikke, ellers prøv i setLoginText() før return, at kalde

super.paint(getGraphics());

Virker det ikke, så er den ihvertfald igang med loginproceduren.

Herefter er jeg blank !!

Carsten
Avatar billede =maddog= Nybegynder
17. marts 2003 - 18:51 #8
bare et forslag - prøv at lade den tråd der kører log-in åbne, sætte tekst i og lukke frame 2.
Avatar billede luctatic Nybegynder
17. marts 2003 - 18:57 #9
ok - prøver det imorgen.
Avatar billede luctatic Nybegynder
18. marts 2003 - 10:29 #10
Den med paint virkede med lidt ændringer. Vi kaldte frame2.paint(frame2.getGraphics()) i frame1 lige efter vi havde lavet den - og nu virker det simpelthen. Vil man have nogle point Carsten?
Avatar billede _carsten Nybegynder
18. marts 2003 - 11:40 #11
Okay !

Gem bare dine point til senere brug.

Carsten
Avatar billede luctatic Nybegynder
18. marts 2003 - 15:00 #12
Hehehe - har så rigeligt af dem. Men ok - hvis du ikke vil have dem ta'r jeg dem tilbage igen.
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