Avatar billede trp79 Nybegynder
14. juli 2004 - 16:21 Der er 1 løsning

Hjælp til grafisk bønne - billede der flytter sig over skærmen

Hejsa
Jeg 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
Avatar billede trp79 Nybegynder
27. juli 2004 - 21:35 #1
droppede ideen :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester