JAVA - Hvordan replace'r jeg en string (text)?

Tags:    snak

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??? :(


*EDIT*
Og ja. Har prøvet det med at sætte en firkant ovenpå. Det virker fint, bortset fra at jeg i min application har gjort min firkant gennemsigtig (Hvilket den SKAL være) og vil derfor ikke gøre det på den måde, idét det resultere at man kan skimte den gamle tekst. :P

[Redigeret d. 26/04-05 21:32:05 af JAVE Apprintice]



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
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??? :(


Du skal bare lave en hvid firkant ovenpå, så man ikke kan se det gamle tal. Her er et eksempel(ikke testet).
Fold kodeboks ind/udKode 


Hilsen Mathias



Prøv dette:

Fold kodeboks ind/udKode 


Her kalder du start(), som så kalder hver gang der er gået 1 sekund gentegner billedet (repaint() sørger for dette).

Jeg har dog ikke testet det..

Hilsen

Martin Dybdal (Dybber)



*EDIT*
Og ja. Har prøvet det med at sætte en firkant ovenpå. Det virker fint, bortset fra at jeg i min application har gjort min firkant gennemsigtig (Hvilket den SKAL være) og vil derfor ikke gøre det på den måde, idét det resultere at man kan skimte den gamle tekst. :P



Lav det med en label i stedet?
Her skal du bare indsætte ny tekst, og den overskriver den gamle...

-------------------------------
Hilsen Jimmi Westerberg
http://www.westsworld.dk / http://www.aktivudvikler.dk




Jeg har dog ikke testet det..


hehe... Der er også nogle fejl. Men prøver lige at ekseperimentere lidt med det ;)



t