Hjælp til grafisk bønne - billede der flytter sig over skærmen
HejsaJeg er lige så lige begyndt at rode lidt med bønner og har fundet inspiration her: http://javabog.dk/vp/kapitel4.jsp
Jeg har indtil videre lavet en rulletekst ud fra linket, men nu har jeg så givet mig selv den udfordring, at det skal være et billede, der suser over skærmen. Er du nogen der kan give mig et hint til hvordan jeg kommer igang?
Her er rulletekstkoden:
package vp;
import java.awt.*;
import java.util.*;
public class Rulletekst extends Component implements Runnable
{
/** fortæl containeren hvad denne komponents foretrukne størrelse er */
public Dimension getPreferredSize() { return new Dimension(100,15); }
// Egenskaber
private String tekst = "rulletekst ";
private int fart = 10; // antal punkter der rykkes i sekundet
private int opdateringstid = 50; // antal millisekunder mellem hver gentegning
public void setTekst(String t) { tekst = t; klar = false; }
public String getTekst() { return tekst; }
public void setFart(int f) { fart = f; }
public int getFart() { return fart; }
public void setOpdateringstid(int f) {
if (f>=10) opdateringstid = f; // tillad ikke under 10 msek
else opdateringstid = 10;
}
public int getOpdateringstid() { return opdateringstid; }
// Interne variabler
private boolean klar = false;
private int tbr, thø; // tekstens bredde og højde i punkter
private String tekstx; // teksten i det nødvendige antal kopier
private synchronized void gørKlar()
{
FontMetrics fm = getFontMetrics(getFont());
tbr = fm.stringWidth(tekst);
thø = fm.getHeight();
Dimension d = getSize(); // komponentens størrelse
int antalKopier = 2*d.width/tbr + 1;
tekstx = tekst;
while (antalKopier-- >= 1) tekstx = tekstx + tekst;
Thread tråd = new Thread(this);
tråd.setDaemon(true);
tråd.start();
klar = true;
}
/** sørger for at kalde repaint() regelmæssigt */
public void run() {
try {
while (true) {
Thread.sleep(opdateringstid);
repaint();
}
} catch (Exception e) {}
}
public void paint(Graphics g)
{
if (!klar) gørKlar();
int x = (int) (System.currentTimeMillis()*fart/1000);
g.drawString(tekstx, x%tbr-tbr, thø);
}
}
Mvh
Torben
