TeddyErt Skrevet 15. februar 2005 Del Skrevet 15. februar 2005 Jeg skal lage et vindu som kommer opp mens brukeren venter på å få koblet seg til databasen. Det skal bare stå "vent litt" eller noe slikt. Slik det er nå så kommer vinduet frem, men ingenting inne i vinduet vises. Noen som vet hvordan dette kan gjøres? Lenke til kommentar
Yakamoto Skrevet 15. februar 2005 Del Skrevet 15. februar 2005 Det du kan gjøre er å starte hele vinduet i en ny tråd. Lenke til kommentar
TeddyErt Skrevet 16. februar 2005 Forfatter Del Skrevet 16. februar 2005 nå har jeg prøvd å gjøre det i en tråd. Her er litt av koden: public loading(String tittel) { setTitle(tittel) ; setAlwaysOnTop(true) ; Thread traad = new Thread(this) ; traad.start() ; } public void run() { makeGui() ; } makeGui() er metoden som setter inn teksten. Problemet er fortsatt at det ikke kommer noen tekst i vinduet, noen tips til hva som kan være feilen? Lenke til kommentar
buskmann Skrevet 16. februar 2005 Del Skrevet 16. februar 2005 Jeg skjønner ikke helt programkoden din, men sånn ville jeg gjort det: main{ ventebilde = new Ventebilde(); kobleTilDB(); ventebilde.dispose(); } class Ventebilde extends JFrame implements Runnable{ // fyll inn } Lenke til kommentar
TeddyErt Skrevet 17. februar 2005 Forfatter Del Skrevet 17. februar 2005 Den er egentlig grei, sånn her er det jeg har satt det opp i selve innloggingsprogrammet: else if(ae.getSource() == okKnapp || ae.getSource() == txtPassord) { loader = new loading("Kobler til databasen") ; Så når man trykker på knappen så skal det loadevinduet komme frem. Her er en liten del av hva som skjer når det lages ny loader klasse: public loading(String tittel) { setTitle(tittel) ; setAlwaysOnTop(true) ; //Thread traad = new Thread(this) ; //traad.start() ; makeGui() ; } Det som er kommentert ut er bare litt tidligere forsøk, slik den står nå så kommer ikke vinduet opp i det hele tatt. Hvis jeg tar å bruker de setningene som er kommentert ut så kommer vinduet frem men selve innholdet i vinduet kommer ikke frem. Lenke til kommentar
buskmann Skrevet 17. februar 2005 Del Skrevet 17. februar 2005 La din loader-klasse implementere grensesnittet Runnable, da lager du en ny tråd. Lenke til kommentar
TeddyErt Skrevet 22. februar 2005 Forfatter Del Skrevet 22. februar 2005 ok nå har jeg laget den til runnable. Den vil fortsatt ikke vise innholdet i vinduet. Jeg startert den på samme måte : loader = new loading("Kobler til databasen") ; Og run() metoden i loadingklassen ser slik ut: public void run() { makeGui() ; } hvor da makeGui() selvfølgelig legger inn teksten i vinduet. Noen som vet hva som kan være feil? Lenke til kommentar
Patton Skrevet 22. februar 2005 Del Skrevet 22. februar 2005 Jeg startert den på samme måte : loader = new loading("Kobler til databasen") ; Foey til denne linjen: new Thread(loader).start(); Lenke til kommentar
TeddyErt Skrevet 22. februar 2005 Forfatter Del Skrevet 22. februar 2005 har lagt til: loader = new loading("Kobler til databasen") ; new Thread(loader).start(); uten at dette forandret noe. Vinduet er fortsatt tomt... Det eneste som jeg får til å fungere er setTitle på vinduet, alt annet vises ikke. Lenke til kommentar
Patton Skrevet 22. februar 2005 Del Skrevet 22. februar 2005 Proev dette istedenfor: loader.run(); Hvis dette ikke virker, saa kanskje har du gjort noe galt i makeGUI(). Er du sikker paa at du har programmert riktig? Faar du teksten til aa vises paa en annen maate, ved aa bruke f.eks. en testklasse? Lenke til kommentar
TeddyErt Skrevet 22. februar 2005 Forfatter Del Skrevet 22. februar 2005 (endret) Prøvde å teste ut metoden makeGui() i en egen klasse og der fungerer den fint. Prøvde også loader.run() uten hell. Virker som om den henger seg når den prøver å koble opp mot databasen Endret 22. februar 2005 av TeddyErt Lenke til kommentar
buskmann Skrevet 22. februar 2005 Del Skrevet 22. februar 2005 Sleng inn all koden her, så kan jeg ta en titt når jeg får tid. Lenke til kommentar
TeddyErt Skrevet 23. februar 2005 Forfatter Del Skrevet 23. februar 2005 (endret) Uten å ta med skriving og lesing til fil så er dette hva klassene inneholder. Selve logon klassen hvor brukeren taster inn brukernavn og passord: loader = new loading("Kobler til databasen") ; new Thread(loader).start() ; try { Context ini = new InitialContext() ; objref = ini.lookup("LoginBean") ; } catch(javax.naming.NamingException ne) { ne.printStackTrace() ; } try { home = (LoginHome)PortableRemoteObject.narrow(objref, LoginHome.class) ; log = home.create() ; } catch(Exception ...... Loadingklassen implementerer runnable og ser slik ut: public loading(String tittel) { setTitle(tittel) ; } public void run() { makeGui() ; } public void makeGui() { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception e) { } loader = new JLabel("Vent litt...") ; setLayout(new FlowLayout()) ; add(loader) ; setSize(100, 100) ; //Setter vinduet i midten av skjermen screenSize = Toolkit.getDefaultToolkit().getScreenSize(); frameSize = this.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } this.setResizable(false) ; this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2) ; setVisible(true) ; Jeg har fått noen tips om å bruker invokelater eller invokeandwait men jeg aner ikke hvordan disse skal brukes her. Har søkt lenge på google uten å bli noe særlig klokere. Tusen takk for all hjelp! Endret 23. februar 2005 av TeddyErt Lenke til kommentar
buskmann Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 import java.awt.Font; import java.awt.Window; import java.awt.Frame; import javax.swing.JLabel; public class Balle{ public static void main(String[] args) throws InterruptedException{ loading loader = new Balle().new loading(); System.out.println("Går og driter jeg"); new Thread(loader).start(); // her kan vi gjør mye rart i stedet for å sove Thread.sleep(5000); System.out.println("Ferdig"); loader.dispose(); } class loading extends Frame implements Runnable{ public void run(){ makeGui(); } public void makeGui(){ Window win = new Window(this); JLabel en = new JLabel("Dette er jammen godt"); en.setFont(new Font("Helvetica", Font.BOLD,14)); win.add(en); win.setSize(200,200); win.setLocation(200,200); win.setVisible(true); } } } Det er ikke noe problem å bytte ut Window med JFrame, hvis du ønsker en titlebar. Lenke til kommentar
TeddyErt Skrevet 24. februar 2005 Forfatter Del Skrevet 24. februar 2005 (endret) problemet blir det samme for der du har skrevet // her kan vi gjør mye rart i stedet for å sove Thread.sleep(5000); Har jeg dette: home = (LoginHome)PortableRemoteObject.narrow(objref, LoginHome.class) ; log = home.create() ; Noe som gjør at hele greia henger seg og ikke viser innholdet i loadingvinduet. Har søkt veldig mye rundt på nettet og funnet noe som heter progressmonitor. Har ikke fått dette til å fungere enda, noen som har erfaringer med dette? Endret 24. februar 2005 av TeddyErt Lenke til kommentar
buskmann Skrevet 24. februar 2005 Del Skrevet 24. februar 2005 problemet blir det samme for der du har skrevet// her kan vi gjør mye rart i stedet for å sove Thread.sleep(5000); Har jeg dette: home = (LoginHome)PortableRemoteObject.narrow(objref, LoginHome.class) ; log = home.create() ; Noe som gjør at hele greia henger seg og ikke viser innholdet i loadingvinduet. Dette har ikke noe si. Ganske enkelt fordi det skjer i en annen tråd. En annen sak er at dispose aldri blir kalt hvis programmet ditt ikke kommer så langt. Lenke til kommentar
TeddyErt Skrevet 24. februar 2005 Forfatter Del Skrevet 24. februar 2005 (endret) Den kommer ned til dispose, men mens den kobler seg opp så vil ikke vinduet vise innholdet. Det kommer et helt blankt vindu opp, eneste som den viser riktig er setTitle. Selve innholdet,her en JLabel, vises ikke. Også når tilkoblingen er klar så lukkes loading vinduet. Endret 24. februar 2005 av TeddyErt Lenke til kommentar
buskmann Skrevet 24. februar 2005 Del Skrevet 24. februar 2005 Veldig rart at det ikke vises hos deg, her hos meg ser jeg JLabel helt fint. Lenke til kommentar
TeddyErt Skrevet 24. februar 2005 Forfatter Del Skrevet 24. februar 2005 har du prøvd å sette inn en oppkobling istedet for sleep? Det virker som om når den skal finne LoginHome på applikasjonsserveren at den henger seg og ikke gjør ferdig gui´en på loading vinduet. Lenke til kommentar
buskmann Skrevet 24. februar 2005 Del Skrevet 24. februar 2005 Fungerer fint her hos meg selv om jeg f.eks. setter en uendelig løkke eller serversocket i stedet for sleep. Som sagt, gui lages i en annen tråd og har ikke innvirkning. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå