Hvordan replace'r jeg en string (text)?

Tags:    java

<< < 12 > >>
Hey. Har et lille spørgsmål. Er så småt igang med at lave en lille countdown fra 4 min. i JAVA:



public class timer
{

public void paint(Graphics g)
{
try
{


Graphics2D g2 = (Graphics2D)g;

Font bold = new Font(Times New Roman, Font.BOLD, 14);

int min = 4;
int sec = 00;

for (int n=0; n<=1; sec--)
{

if (sec == 00){

sec = 59;
min = min-1;

}

double onesecond = 1000;

long time = (long) onesecond;
Thread.sleep(time);

g.setFont(bold);
g.setColor(Color.orange);

g.drawString(min+":"+sec,770,20);


}

}
catch (InterruptedException e)
{

}
}
}



Så. Nu er det gjort. Nu nedtæller den fra 4 min. hvert sekund, på positionen 770,20, men den udskriver det jo sådan:

4:00 - 3:59 - 3:58 - 3:57 .......... osv..............

Problemet er at den skriver alle tallene oven i hinnanden. Det er meningen den, efter hvert sekund, skal erstatte de forrige tal.

fx: 4:00 /\\::et sekund efter bliver 4:00 slettet og der kommer til at stå::/\\3:59

Nogle der kan hjælpe??? :(



11 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Nu er det ved at være mange år jeg sidst har været i nærheden af en applet, men så vidt jeg husker er det metoden repaint() (eller er det bare at kalde paint igen?) du skal have fat i.

[Redigeret d. 27/04-05 14:17:29 af Steffen Laursen]




///////////////INDSAT////////////////////
g.setColor(Color.WHITE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////


Dette ville desvære ikke virke. Har tænkt på, men jeg har en "ikke hvid" baggrund :P Ellers tak. :)

Whatever...du er nødt til at gentegne din baggrund. Om den så har en fast farve eller er et billede eller en milliard objekter.

Kan du så ikke bruge:
///////////////INDSAT////////////////////
g.setColor(DIN BAGGRUNDS FARVE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////


Hilsen Mathias



Mange år siden jeg sidst skrev noget java kode, men jeg mener at det letteste var at overtegne området med et filled rect også tegne strengen.
-----------------------------------------------------------------------------

Min side ->www.the-hive.dk/~donp/



public class timer
{

public void paint(Graphics g)
{
///////////////INDSAT////////////////////
g.setColor(Color.WHITE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////
try
{


Graphics2D g2 = (Graphics2D)g;

Font bold = new Font(Times New Roman, Font.BOLD, 14);

int min = 4;
int sec = 00;

for (int n=0; n<=1; sec--)
{

if (sec == 00){

sec = 59;
min = min-1;

}

double onesecond = 1000;

long time = (long) onesecond;
Thread.sleep(time);

g.setFont(bold);
g.setColor(Color.orange);

g.drawString(min+":"+sec,770,20);


}

}
catch (InterruptedException e)
{

}
}
}






///////////////INDSAT////////////////////
g.setColor(Color.WHITE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////


Dette ville desvære ikke virke. Har tænkt på, men jeg har en "ikke hvid" baggrund :P Ellers tak. :)





///////////////INDSAT////////////////////
g.setColor(Color.WHITE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////


Dette ville desvære ikke virke. Har tænkt på, men jeg har en "ikke hvid" baggrund :P Ellers tak. :)





///////////////INDSAT////////////////////
g.setColor(Color.WHITE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////


Dette ville desvære ikke virke. Har tænkt på, men jeg har en "ikke hvid" baggrund :P Ellers tak. :)

Whatever...du er nødt til at gentegne din baggrund. Om den så har en fast farve eller er et billede eller en milliard objekter.




Kan du så ikke bruge:
///////////////INDSAT////////////////////
g.setColor(DIN BAGGRUNDS FARVE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////


Hilsen Mathias


Det ville være meget svært siden det er et baggrunds billede :P Har skam tænkt på alle de enkle og logiske løsning, men ingen af dem støtter mine ideer :D

Dog tror jeg at jeg kan løse dette problem med noget Stringbuffer eller noget, men jeg har ingen anelse hvordan jeg bruger string buffer. :S Nogle der kan hjælpe? :/





Kan du så ikke bruge:
///////////////INDSAT////////////////////
g.setColor(DIN BAGGRUNDS FARVE);
g.fillRect(0,0,getSize().width,getSize().height);
/////////////////////////////////////////////


Hilsen Mathias


Det ville være meget svært siden det er et baggrunds billede :P Har skam tænkt på alle de enkle og logiske løsning, men ingen af dem støtter mine ideer :D

Dog tror jeg at jeg kan løse dette problem med noget Stringbuffer eller noget, men jeg har ingen anelse hvordan jeg bruger string buffer. :S Nogle der kan hjælpe? :/

Kan du så ikke bare tegne baggrunds billedet obenpå..?

Hilsen Mathias




Kan du så ikke bare tegne baggrunds billedet obenpå..?

Nej. læs det hele tak. Jeg vil lave denne her timer sådan at det er selve teksten der gentegner sig.
Kan ikke bare sætte en farvet box, baggrunds billede, samme farve tekst eller andet, for det vil ikke passe med det jeg skal bruge denne applet til!

Som sagt har jeg stadig en mistanke om at jeg skal bruge "Stringbuffer", men jeg er langt fra sikker.




<< < 12 > >>
t