// PalloLiikkuuHiirellaApplet.java (c) Kari Laitinen // 2006-01-20 File created. // 2009-11-03 Ohjelma muutettu JPanel-pohjaiseksi // 2010-01-15 Viimeisin muutos. /* Tama apletti piirtaa ruudulle kolme Pallo-luokan oliota. Naita palloja on mahdollista siirtaa tarttumalla niihin hiirella. Pallo-luokassa on olemassa valmiit metodit joilla mm. tutkitaan onko hiiren klikkauskohta pallon paalla ja suoritetaan tarvittava pallon siirtaminen. Tiedoston Pallo.java tulee olla samassa hakemistossa tata tiedostoa kannettaessa. */ import java.awt.* ; import java.awt.event.* ; import javax.swing.* ; class PalloLiikkuuHiirellaPanel extends JPanel implements MouseListener, MouseMotionListener { int apletin_leveys, apletin_korkeus ; Pallo eka_pallo, toka_pallo, kolmas_pallo ; Pallo liikuteltava_pallo = null ; Point edellinen_hiiren_paikka ; public PalloLiikkuuHiirellaPanel( int annettu_apletin_leveys, int annettu_apletin_korkeus ) { apletin_leveys = annettu_apletin_leveys ; apletin_korkeus = annettu_apletin_korkeus ; eka_pallo = new Pallo( apletin_leveys / 2 - 150, apletin_korkeus / 2, Color.red ) ; toka_pallo = new Pallo( apletin_leveys / 2, apletin_korkeus / 2, Color.green ) ; kolmas_pallo = new Pallo( apletin_leveys / 2 + 150, apletin_korkeus / 2, Color.blue ) ; addMouseListener(this); addMouseMotionListener(this); } // The following dummy functions are needed // to satisfy listener interfaces. public void mouseMoved( MouseEvent event ) {} public void mouseClicked( MouseEvent event ) {} public void mouseEntered( MouseEvent event ) {} public void mouseExited( MouseEvent event ) {} public void mousePressed( MouseEvent event ) { Point klikkauspiste = event.getPoint() ; if ( eka_pallo.piste_on_pallolla( klikkauspiste ) ) { liikuteltava_pallo = eka_pallo ; liikuteltava_pallo.aktivoi_pallo() ; } else if ( toka_pallo.piste_on_pallolla( klikkauspiste ) ) { liikuteltava_pallo = toka_pallo ; liikuteltava_pallo.aktivoi_pallo() ; } else if ( kolmas_pallo.piste_on_pallolla( klikkauspiste ) ) { liikuteltava_pallo = kolmas_pallo ; liikuteltava_pallo.aktivoi_pallo() ; } edellinen_hiiren_paikka = klikkauspiste ; repaint() ; } public void mouseReleased( MouseEvent event ) { if ( liikuteltava_pallo != null ) { liikuteltava_pallo.deaktivoi_pallo() ; liikuteltava_pallo = null ; repaint() ; } } public void mouseDragged( MouseEvent event ) { if ( liikuteltava_pallo != null ) { Point uusi_hiiren_paikka = event.getPoint() ; int tarvittava_siirtyma_x = uusi_hiiren_paikka.x - edellinen_hiiren_paikka.x ; int tarvittava_siirtyma_y = uusi_hiiren_paikka.y - edellinen_hiiren_paikka.y ; edellinen_hiiren_paikka = uusi_hiiren_paikka ; liikuteltava_pallo.siirra_palloa( tarvittava_siirtyma_x, tarvittava_siirtyma_y ) ; repaint() ; } } public void paintComponent( Graphics graphics ) { super.paintComponent( graphics ) ; eka_pallo.piirra( graphics ) ; toka_pallo.piirra( graphics ) ; kolmas_pallo.piirra( graphics ) ; } } public class PalloLiikkuuHiirellaApplet extends JApplet { public void init() { getContentPane().add( new PalloLiikkuuHiirellaPanel( getSize().width, getSize().height ) ) ; } }