Hirdetés

Keresés

Új hozzászólás Aktív témák

  • gaben
    aktív tag

    Egyébként mi a hibaüzenet, mert a kódban, ahogy én oldottam meg a visszaszámlálást simán működött. Ott GregorianCalendar-t használtam és ahogy írtad a milliszekundumuk különbségét. Egyébként szerintem a Calendarnál a december 11, mert januárt a 0 jelenti.

    ahan, a 0 volt a gond :)
    A hiba meg már nem tom miért volt, de megoldódott.
    Köszi!

  • gaben
    aktív tag

    Szervusz!

    GregorianCalendar gc=new GregorianCalendar(2011, 11, 31, 17, 20);//januar -0
    2011.december.31 17:20 ( még egy szám a másodpercet jelölné)

    Én így csináltam volna.

    Először én is úgy próbáltam, de hibát dobott. :(
    na sikerült összehozni végül, igaz más módon.

    datum = Calendar.getInstance();
    datum.set(Calendar.YEAR, 2011);
    datum.set(Calendar.MONTH, 12);
    datum.set(Calendar.DAY_OF_MONTH, 15);
    datum.set(Calendar.HOUR_OF_DAY, 0);
    datum.set(Calendar.MINUTE, 0);
    datum.set(Calendar.SECOND, 0);

    Azt szeretném csiinálni ,hogy 2 dátum közötti eltelt napok számáz, órát, percet akarom lekérdezni. Úgy gondoltam ,hogy lekérdeztem a két dátum esetén a millisec-et, és a kettőt kivontma egymásból. Ekkor megkapok egy számot és ha azt osztom 1000*60*60- al akkor megkapom ,hogy hány óra van a két dátum között, ha ezt tovább osztom 24 -el akkor a napokat. De a baj az ,hogy téves számot kapok, ha így csinálom. Mit rontottam el?

  • gaben
    aktív tag

    A ma délután írt hozzászólásomban írt kód működött. Viszont a tesztemben volt annyi körítés hozzá, hogy az ablakban volt egy gomb is és a számláló csak arra kattintva indult el, de ez szerintem nem számít.

    A kód egyébként így az alapértelmezett megjelenítést használja. Én pl. a NetBeans-ben állítottam be, hogy milyen színű legyen a JLabel.

    Egyébként nagyon eredeti megelenítést akarsz? Mert akkor tényleg a Graphicsos megoldást kéne megtalálnunk :D . Annyit olvastam, hogy az update eljárás békén hagyja a hátteret és meghívja a ComponentUI osztály update függvényét. Itt elvesztettem a fonalat, hogy miért nem működik ( esetemben a végén eltűnt a kiírt szöveg csak a háttér maradt )

    áhh, dehogy akarok nagyon eredetit, csak legyen egy alap kék háttér ,meg a kiíraások és a számláló, de ez sem akar működni. Ment egy mail.

  • gaben
    aktív tag

    Megint próbálkoztam egy kicsit. Sajnos most olyan hibával találkoztam, hogy ugyan szépen frissíti a képet a kód ( az is, amit elsőnek írtál ), de a végén, amikor kilép a ciklusból eltűnik a kiírt szöveg. Mintha ezt a Java update hívásai okoznák, sajnos a megoldásra még nem jöttem rá.

    Viszont ha csak egy számláló kiírása a cél, akkor szerintem egyszerűbb egy JLabel-t használni erre a célra, amit pl. NetBeansben is vagy saját prancsokkal testre szabsz ( háttérszín, betűméret, betű színe, típusa )

    Csináltam egy osztályt, aminek a konstruktorában beállítod, hogy melyik JLabel számoljon és utána meghívod a start-ot.

    class IdoThread extends Thread{
    JLabel label;
    public IdoThread(JLabel label)
    {
    this.label=label;
    }
    public void run(){
    int ido=0;
    while(ido<5){

    label.setText(""+ido);
    label.update(label.getGraphics());
    try{
    Thread.sleep(1000);
    }catch(InterruptedException ie){
    ie.printStackTrace();
    }
    ido++;

    }
    }
    }

    Valahol a programkódban, ahol szükséged van a számláló elindítására ( pl. egy gombra kattintva ) beszúrod ezt:

    IdoThread it=new IdoThread(jLabel1);
    it.start();

    Ennek még az is az előnye, hogy nem blokkolja az alkalmazásod felületét, tehát a számláló akkor is megy, ha mondjuk gépelsz a programodban, vagy így használható lesz egy másik gomb is, ami mondjuk a számláló leállítására szolgál.

    Úgy néz ki, hogy a tegnap esti megoldásom egy elég nagy katyvasz lett :D és nem valószínű, hogy működni is fog.

    Nem tudom, hogy ennyi megoldja-e a problémádat, mert az tényleg furcsa, hogy nem akar működni a kirajzolás a Graphics-on.

    Szia!
    Igen délután én is szórakoztam vele, és nekem is hol eltűnt a szöveg, hol a terület fele fehér volt ,a másik fele meg a kívánt szín, hol dobott egy csomó hibát, szóval akár hogy próbáltma ,sehogy nem jött össze. :( Köszi amúgy ,hogy foglalkoztál vele.
    És amúgy neked működött a 2. mód? Mert nekem nem akar. :(((
    Nem frissíti a számolást. Csak a kezdeti értéket látom. :(((

  • gaben
    aktív tag

    Szervusz!

    Az nem lehet a gond, hogy a super.update(g) -t azután hívod meg, hogy 1 másodpercet őihent a szálad és utána azonnal módosítja a kiírt számot?

    Én így próbálnám meg:
    g.drawString(nap.getText(),10,90);
    super.update(g);
    try {
    Thread.sleep(1000);
    } catch (InterruptedException ex) {}

    Szia!
    Sajnos nem. Ha előtte hívom meg ,akkor nem fog jól látszani a számlálás másodpercenként, mivel a super.update(g) is folyamatosan hívódik, így "nagy vibrálás" lesz az egész. Meg egy pár másodperc után Exception in thread "AWT-EventQueue-1" java.lang.StackOverflowError lesz.

    A while ciklus miatt van, de nem tudom miért. A "szál nem tud rajzolni", mert benne van a ciklusban??

Új hozzászólás Aktív témák

Hirdetés