powtórenie (2)

background image

Laboratorium z informatyki sem. II

Wydział Transportu PW - 2010/11

Przykład zadania na kolokwium 2.

Przykład animacji - zegar

Opracować aplikację, która wyświetla tarczę zegara z dwiema obracającymi się wskazówkami.

Wskazówki zegara są odcinkami o położeniu zmieniającym się w takt przerwań generowanych przez

komponent Timer. Wykorzystamy metody klasy Timer: start() , stop() oraz metodę setDelay (d) określającą
interwał d między zgłoszeniami zdarzeń timera.

Prędkość obrotu jest regulowana za pomocą komponentu JSlider, dla którego minimum=50, maximum=500.

Rysunek tworzymy na panelu o rozmiarach 200 x 200 (środek tarczy znajduje się w punkcie (100,100)).

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.Timer;


public class Animacja extends javax.swing.JFrame

implements ActionListener{

double a1,a2;

// a1,a2 – kąty między wskazówkami i osią y

Zegar Z ;
Timer T;
public Animacja() {
initComponents();
setSize(400, 400);
Z=new Zegar(); Z.setBounds(20,20,200,200);
add( Z);
T = new Timer(200, this);

//początkowy takt zegara 200 ms

}
public class Zegar extends JPanel { //klasa wewnętrzna
public void paintComponent(Graphics g) {
int x,y, d1=90, d2=70;
g.setColor(Color.yellow); g.fillOval(0, 0, 200, 200);

// rysowanie tarczy

g.setColor(Color.BLUE); g.drawOval(0, 0, 198, 198);
g.setColor(Color.BLACK);
x=100+(int)(d1*Math.sin(a1));

//(x,y) - koniec wskazówki

y=100-(int)(d1*Math.cos(a1));
g.drawLine(100, 100, x, y);

// rysowanie wskazówki minutowej

x=100+(int)(d2*Math.sin(a2));
y=100-(int)(d2*Math.cos(a2));
g.drawLine(100, 100, x, y); //

rysowanie wskazówki godzinowej

}
}
public void actionPerformed(ActionEvent e) {
a1=a1+Math.PI/30;

// nowe położenie wskazówki minutowej

Z.repaint();
if (a1>2*Math.PI){

// następna godzina

a1=a1-2*Math.PI;

a2=a2+Math.PI/6; }
}.
private void jButton1Start(java.awt.event.ActionEvent evt) {
T.start();

// uruchomienie timera

}
private void jButton2Stop(java.awt.event.ActionEvent evt) {
T.stop();

// zatrzymanie timera

}
private void jSlider1MouseDragged(java.awt.event.MouseEvent evt) {
T.setDelay(jSlider1.getValue());

// zmiana interwału timera

}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Animacja().setVisible(true);
}
});
}
}


Wyszukiwarka

Podobne podstrony:
Wykład 3 powtórzenie 2010 studenci (1)
Matematyka 2 Lekcje powtórzeniowe w gimnazjum
POWTÓRKA SREDNIOWIECZE
Powtórka komunikacja
Kalendarz powtórek matura 2013
Powtórka strony WWW
Powtórzenie
Powtórzenie wiadomości, STUDIA, Dydaktyka
powtórzenie wiadomości, Pomoce do zajęć, Technika, rysunek techniczny, pismo techniczne
Środki stylistyczne i rodzaje rymów - powtórzenie wiadomości., Sql, Projekty, prace domowe, dodatkow
Procedury check in i check out oraz kompleksowa obsługa, powtórki do egzaminów
Leki stosowane w nadciśnieniu tętniczym-powtórzenie (1), Szkoła
Tematy wykładów do powtórki przed egzaminem z Epistemologi 2011, Filozofia, teksty różne

więcej podobnych podstron