/*
VälittääHTML-sivulta parametrina saadun tekstirivin
appletin näytölle ajettavaksi.
*/
import java.awt.*;
public class Varoitus extends javax.swing.JApplet
implements Runnable {
String text = "Tekstiä ei välitetty";
float hue = (float) 0.5;
float saturation = (float) 0.8;
float brightness = (float) 0.0;
Font textFont = new Font("Dialog", Font.BOLD, 20);
int textX;
Thread runner; // Käynnistettävä säie
public void init() {
setBackground(Color.black); // Taustaväri
String paramName = getParameter("TEXT"); // HTML-parametri
if (paramName != null) // Jos parameti erisuu kuin tyhä niin
text = paramName; // sijoita parametri tekstiin
FontMetrics fm = getFontMetrics(textFont); // Perusta fonttia vastaava mitoitusmuuttuja
textX = getSize().width / 2 - fm.stringWidth(text) / 2; // Laske tekstin koko
}
// Tulostaa näyttöruudun
public void paint(Graphics screen) {
Graphics2D screen2D = (Graphics2D) screen;
// Kirkkausarvot muuttuvat koko ajan
Color textColor = Color.getHSBColor(hue, saturation,
brightness); // Määritä värimuuttuja RGB arvojen mukaan
screen2D.setColor(textColor); // käsittele tulostusta 2D-muodossa
screen2D.setFont(textFont);
screen2D.drawString(text, textX, 30);
}
// Kutsutaan ruudun päivitysmetodia paint
public void update(Graphics screen) {
paint(screen);
}
// Luodaan pausemetodi, jossa määrätään kauanko säi runner huilaa.
void pause(int kesto) {
try { // thehdään aina jos vaan mahdollista. (Ei keskeytetty)
Thread.sleep(kesto);
} catch (InterruptedException e) {
// TODO: Lisää keskeytysmetodit myöhemmin
}
}
// Käynnistysmetodi säikeen Thread runner mukaan
public void start() {
if (runner == null) { // Säikeen luonti/käynnistys
runner = new Thread(this); // this= On applettiin viittaava parametri Ei
runner.start(); // esimerkiksi metodin säie.
}
}
// Appletin pysäytysmetodi
public void stop() {
if (runner != null) {
runner = null;
}
}
// Appletin suorituksen käynnistysmetodi
public void run() {
Thread thisThread = Thread.currentThread();
while (runner == thisThread) { // ANIMAATION TOTEUTUSLOOPPI
pause(35); // Uinumistauko millisekunteina
brightness += 0.05;
if (brightness > 1) {
brightness = (float) 0.0;
pause(75);
}
repaint(); // Päivitä ruutu uinumisen loputtua
}
}
}