[JAVA]Lichtkrant m.b.v. thread

Pagina: 1
Acties:

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 26-05 22:24

PromWarMachine

Forsaken Archer

Topicstarter
'k Ben bezig een lichtkrant in JAVA te maken, in een TextField. Nu had ik zelf een manier verzonnen om dit voor elkaar te krijgen. Namelijk: Zet steeds een spatie aan het begin van het textfield (in een loop) en druk daar achter de string af.

Dit effect krijg je dan
code:
1
2
3
4
5
" string"
"  string"
"   string"
"    string"
"     string"


Als je dit snel achter elkaar ziet, lijkt het net of 'ie beweegt.

Dit probeerde ik voor elkaar te krijgen met het volgende fragment code:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void run ()
        {
           String s="teststring";
           while (doorgaan)
           {
               i++;
               for (int x=0; x<i; x++)
               {
                   resultaat.setText(resultaat.getText() + " ");
               }

               resultaat.setText(resultaat.getText() +s+ " ");
               slaap(550);
           }
       }


Slaap is een sleep-functie en s is de string die in het TextField(resultaat) weergegeven wordt. Dat for-lusje genereerd de beginnende spaties.

In regel 12 gaat het fout, omdat de tweede keer dat de for-lus doorlopen wordt, de teststring al in het textfield staat, waardoor de teststring gewoon 2x wordt afgedrukt, gescheiden door een spatie. Er zit ergens een denkfout, want dit werkt niet zoals het moet werken. Kan iemand me op weg helpen?

edit:

Eigenlijk moet ik, zie ik nu, maar een klein aantal tekens uit de textfield halen, met getText(). Namelijk het aantal spaties dat op dat moment in het textfield staat... even kijken naar de mogelijkheden van getText.


Liefst gebruik makend van gewoon AWT, ben nog niet zo thuis in Swing...

[ Voor 20% gewijzigd door PromWarMachine op 18-12-2003 11:22 ]

Dividend for Starters


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 27-05 10:14

Eelke Spaak

- Vlad -

Het je plakt de spaties achteraan in die code, maar uit je voorbeeldje boven maak ik op dat je de spaties ervoor wil hebben.

TheStreme - Share anything with anyone


  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 26-05 22:24

PromWarMachine

Forsaken Archer

Topicstarter
Ja, inderdaad. Ervoor.

Maar ik heb even pauze genomen en er met een frisse blik op gekeken. Toen kwam ik er achter, dat ik veel simpeler, gewoon 2 strings kan gebruiken en die later aan elkaar plakken. :X

Op deze manier dus:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void run ()
        {
           String s="teststring";
           while (doorgaan)
           {
               String string1 = "";

               i++;
               for (int x=0; x<i; x++)
               {
                    string1 = string1 + " ";
               }

               String result = string1 + s;
               resultaat.setText(result);
               slaap(550);

           }
       }

Sorry for bothering ;)

'k Heb het getest en het werkt, nu moet ik nog gaan afvangen dat hij na een bepaald aantal keer bewegen weer van voor af aan moet beginnen, maar dat gaat ook wel lukken neem ik aan.

[ Voor 4% gewijzigd door PromWarMachine op 18-12-2003 11:35 ]

Dividend for Starters


Verwijderd

:)
HvU toevallig?

De spaties moet je er natuurlijk wel voor zetten 8)7

edit:
oeh, da's wel erg te laat.

Eh, volgens mij kun je ook (met een of andere string fuctie) meteen een string maken van een bepaalde grootte, gevuld met een teken wat je opgeeft (spatie bijvoorbeeld ;)). Ik dacht dat dat (ook) in Java kon, of vergis ik me nu?

[ Voor 65% gewijzigd door Verwijderd op 18-12-2003 11:37 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Wat is er mist met
Java:
1
2
3
4
5
6
7
8
9
10
int i = 0;
while( !stop ) {
   if( i % maxSpaces == 0 )
      resultaat.setText( l_message );
   else
      resultaat.setText( " " + resultaat.getText() );
   
   slaap( 550 ); 
   ++i;
}


Je forloopje is niet zo nodig ;)

[ Voor 9% gewijzigd door Glimi op 18-12-2003 11:39 ]


  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 26-05 22:24

PromWarMachine

Forsaken Archer

Topicstarter
Verwijderd schreef op 18 december 2003 @ 11:35:
:)
HvU toevallig?

De spaties moet je er natuurlijk wel voor zetten 8)7
Nog niet, volgend jaar wel HvU, ik moet dit dus nog even bewaren? :X
edit:
oeh, da's wel erg te laat.

Eh, volgens mij kun je ook (met een of andere string fuctie) meteen een string maken van een bepaalde grootte, gevuld met een teken wat je opgeeft (spatie bijvoorbeeld ;)). Ik dacht dat dat (ook) in Java kon, of vergis ik me nu?
Ja, aan zo'n stringfunctie zat ik ook te denken, maar kon zo gauw niet aan de naam komen en het moet natuurlijk ook niet te moeilijk worden voor m'n leraar. :+ Mijn leraren hebben de eigenschap alleen hun eigen maniertjes en methoden te snappen. :X

@Glimi: Die werkt inderdaad ook! :)

Dividend for Starters


Verwijderd

kun je niet beter g.drawString() met coördinaten gebruiken??

(ik weet dat m'n 'docent' dat oook deed met spaties enzo...hatelijk vond'k dat, hij gebruikte zelfs geeneens een textfield).

Verwijderd

PromWarMachine schreef op 18 december 2003 @ 11:56:

Nog niet, volgend jaar wel HvU, ik moet dit dus nog even bewaren? :X
Ja, dat zou ik maar doen ja :)
Hoewel, je hebt 'm dan toch ook zo opnieuw gemaakt.
Ja, aan zo'n stringfunctie zat ik ook te denken, maar kon zo gauw niet aan de naam komen en het moet natuurlijk ook niet te moeilijk worden voor m'n leraar. :+ Mijn leraren hebben de eigenschap alleen hun eigen maniertjes en methoden te snappen. :X
Dat is iets waar je rekening mee moet houden ja. Op het werk zoek je de mooiste oplossing (zie Glimi), voor school zoek je de oplossing die je docent graag wil :+
@Glimi: Die werkt inderdaad ook! :)
En is mooier, vind ik.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Hij kan trouwens nog wat sneller dmv een stringbuffer en caching van de String.
Pagina: 1