Første |
|
Billeder og tråde serie, Planche nr. 7 |
![]() |
Udskrift af : Billeder og tråde |
public abstract boolean drawImage(Image img, int x, int y,
ImageObserver observer)
public abstract boolean drawImage(Image img, int x, int y,
int width, int height, ImageObserver observer)
public abstract boolean drawImage(Image img, int x, int y,
Color bgcolor, ImageObserver observer)
public abstract boolean drawImage(Image img, int x, int y,
int width, int height, Color bgcolor, ImageObserver
observer)
Bemærk - metoden returnerer lige så snart billedet begynder at dannes. Det gøres færdig i en separat tråd.
Tilpas størrelsen, hvis det ikke passer....
De to velegnede metoder, getImage() og getCodeBase() er metoder defineret i klassen Applet. Det er altså kun klasser, der er udvidet derfra, de kan bruges på.
Der er altid flere tråde igang.
Nogle API (f.eks. getImage() i Applet-klassen) starter automatisk en ny tråd.
public class MinApplet extends java.applet.Applet implements Runnable { .... Øvrige initialiseringer og metoder Thread traad; // til at gemme en ny tråd .... public void start() { // overskriver metoden start if (traad == null) { traad = new Thread(this); traad.start(); // start den nye tråd } } public void stop() { // overskriver metoden stop if (traad != null) { traad.stop(); traad = null; // frigiver traad-objektet helt } } public void run() { // overskriver metoden run .... applettens egentlige arbejde } }
Når man påstår, at man 'implements' Runnable, checker javac om man har overskrevet de metoder, som klassen Thread skal bruge for at styre trådene.
Bemærk også, at start i dette eksempel er to forskellige metoder. Der er en metode start() i både klassen MinApplet og i klassen Thread! Det samme gælder metoderne stop().
/* * 1.0 code. */ import java.applet.Applet; import java.awt.Graphics; public class Simple extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); addItem("initializing... "); } public void start() { addItem("starting... "); } public void stop() { addItem("stopping... "); } public void destroy() { addItem("preparing for unloading..."); } void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); } public void paint(Graphics g) { //Draw a Rectangle around the applet's display area. g.drawRect(0, 0, size().width - 1, size().height - 1); //Draw the current string inside the rectangle. g.drawString(buffer.toString(), 5, 15); } }
Dette eksempel kan køres.
Bemærk, at javac vil hævde, at der bruges en forældet (deprecated) metode. Den fortæller også, hvordan man skal finde hvilken.
Første |
|
Billeder og tråde serie, Planche nr. 7 |