Tworzenie appletów w javie
14 July 2008
Comments
Programy w javie mogą być apletami lub aplikacjami. Te pierwsze są interpretowane przez wirtualną maszynę javy wbudowaną w przeglądarkę lub inną aplikację a te drugie są zwykłymi samodzielnymi aplikacjami. Teraz zajmiemy się apletami, choć budowa zwykłych aplikacji jest podobna.Kod najprostszego appletu wygląda tak:
import java.applet.*;
import java.awt.*;
public
class Test extends Applet
{
public void paint (Graphics gDC)
{
gDC.drawString("applecik", 100, 100);
}
}
<applet code="Test.java" width="100" height="100"></applet>
appletviewer plik.html
Teraz analiza kodu. Nasza klasa dziedziczy z predefiniowanej klasy Applet opisującej zachowanie apletów (java.applet), w której to znajduje się referencja do gDC - graphics device context - obiektu umożliwiającego rysowanie na ekranie. Przy ładowaniu appletu najpierw wykonywany jest konstruktor, potem metoda init (jeżeli istnieje), potem start a przy kończeniu działania appletu - metoda stop.
Czcionki
W apletach mamy do dyspozycji kilka czcionek oraz możliwości ich wykorzystywania w appletach.import java.applet.*;
import java.awt.*;
public
class Test extends Applet
{
public void paint (Graphics gDC)
{
Font font = new Font ("SansSerif", Font.BOLD, 36);
gDC.setFont(font);
gDC.drawString("applecik", 100, 100);
}
}
Rysowanie grafik
Możemy również rysować proste grafiki. Rysowanie linii odbywa się za pomocą gDC.drawLine(x1, y1, x2, y2); gdzie x1, y1 to współrzędne punktu startu a x2, y2 współrzędne punktu końcowego. Przykład:import java.applet.*;
import java.awt.*;
public
class Test extends Applet
{
public void paint (Graphics gDC)
{
gDC.drawLine(120, 120, 160, 40);
gDC.drawLine(200, 120, 160, 40);
gDC.drawLine(120, 120, 200, 120);
gDC.drawLine(160, 200, 160, 120);
}
}
drawOval(x, y, długość, wysokość); fillOval(x, y, długość, wysokość);
import java.applet.*;
import java.awt.*;
public
class Test extends Applet
{
public void paint (Graphics gDC)
{
gDC.drawOval(50, 50, 100, 100);
gDC.fillOval(75, 75, 50, 50);
}
}
Prostokąty można rysować za pomocą:
drawRect(x, y, długość, wysokość); fillRect(x, y, długość, wysokość);
import java.applet.*;
import java.awt.*;
public
class Test extends Applet
{
public void paint (Graphics gDC)
{
gDC.setColor(Color.red);
gDC.drawRect(50, 50, 100, 100);
Color color = Color.black;
color = new Color(color.getRed()+40, color.getGreen()+140, color.getBlue()+10);
gDC.setColor(color);
gDC.fillRect(75, 75, 50, 50);
}
}
Wyświetlanie grafiki również jest możliwe:
import java.applet.*;
import java.awt.*;
public
class Test extends Applet
{
public void paint (Graphics gDC)
{
Image img;
img = getImage(getDocumentBase(), "foto.jpg");
gDC.drawImage(img, 0, 0, this);
}
}
Zdarzenia i Mysz
Obsługa zdarzeń wywołanych myszą jest prosta... Obsługę podstawowych zdarzeń generowanych myszą oferuje interfejs MouseListener. Za jego pomocą aplet będzie mógł reagować na kliknięcia i inne akcje myszy. Korzystając z tego interfejsu musimy zdefiniować następujące metody:public void mouseClicked(MouseEvent evt) {}
public void mousePressed(MouseEvent evt) {}
public void mouseExited(MouseEvent evt) {}
public void mouseEntered(MouseEvent evt) {}
public void mouseReleased(MouseEvent evt) {}
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public
class Test extends Applet implements MouseListener
{
private int x,y;
String str;
public void init()
{
addMouseListener(this);
}
public void paint (Graphics gDC)
{
gDC.drawString("Kliknięcie: "+ x + " / " + y, 10, 200);
}
public void mouseClicked(MouseEvent evt)
{
x = evt.getX();
y = evt.getY();
repaint();
}
public void mousePressed(MouseEvent evt) {}
public void mouseExited(MouseEvent evt) {}
public void mouseEntered(MouseEvent evt) {}
public void mouseReleased(MouseEvent evt) {}
}
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public
class Test extends Applet implements MouseListener
{
private int x,y, z;
String str;
Rectangle rect;
public void init()
{
addMouseListener(this);
rect = new Rectangle(75, 75, 50, 50);
}
public void paint (Graphics gDC)
{
gDC.fillRect((int)rect.getX(), (int)rect.getY(), (int)rect.getWidth(), (int)rect.getHeight());
gDC.drawString("Kliknięcie: "+ x + " / " + y, 10, 200);
gDC.drawString("W kwadracie: "+ z, 10, 220);
}
public void mouseClicked(MouseEvent evt)
{
x = evt.getX();
y = evt.getY();
if (rect.contains(x, y))
{
z = 1;
}
else
{
z = 0;
}
repaint();
}
public void mousePressed(MouseEvent evt) {}
public void mouseExited(MouseEvent evt) {}
public void mouseEntered(MouseEvent evt) {}
public void mouseReleased(MouseEvent evt) {}
}
Innym interfejsem do zdarzeń generowanych przez mysz jest MouseMotionListener, który obejmuje ruch myszy i wymaga zdefiniowania dwóch metod: mouseDragged i mouseMoved. Pierwsza odnosi się do ruchu kursora z wciśniętym klawiszem. Przykład:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public
class Test extends Applet implements MouseMotionListener
{
private int x,y, z;
String str;
public void init()
{
addMouseMotionListener(this);
}
public void paint (Graphics gDC)
{
gDC.drawString("Kliknięcie: "+ x + " / " + y, 10, 200);
//Image img;
//img = getImage(getDocumentBase(), "foto.jpg");
//gDC.drawImage(img, 0, 0, this);
}
public void mouseMoved(MouseEvent evt)
{
x = evt.getX();
y = evt.getY();
repaint();
}
public void mouseDragged(MouseEvent evt) {}
}
RkBlog
Comment article