// Proge: animatsioon // Grupp: // Silver Salonen // Virgo Vardja // Kait-Kaarel Kamla import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Joonis { public static void main(String arg[]) { new Joonistamine(); } } class Joonistamine extends JFrame { // Freim, milles asjad jooksevad JFrame f = new JFrame("Joonis"); // Labelid JTextField label1 = new JTextField("Mult:", 5); JTextField label2 = new JTextField("Kiirus:", 7); // Tekstiva"ljad JTextField t1 = new JTextField("1", 3); JTextField t2 = new JTextField("1", 3); // Nupp JButton b = new JButton("Genereeri"); // Konstruktor: public Joonistamine() { // Layoutiks FlowLayout f.getContentPane().setLayout(new FlowLayout()); // Elemendid paika f.getContentPane().add(label1); f.getContentPane().add(t1); f.getContentPane().add(label2); f.getContentPane().add(t2); f.getContentPane().add(b); // M6ningate elementide m6ningate atribuutide modimine label1.disable(); label2.disable(); b.addActionListener(new Joonistaja(this)); // Freimi atribuudid paika f.setSize(400, 400); f.setResizable(false); f.setVisible(true); f.addWindowListener(new WHandler()); } } class Joonistaja implements ActionListener { Joonistamine j; float multiplier; long speed; public Joonistaja(Joonistamine uj) { j = uj; } public void actionPerformed(ActionEvent e) { // Krabame graafika-ala Graphics g = j.f.getContentPane().getGraphics(); // Puhastame graafika-ala. // TODO: kas eksisteerib v6imalust background-colorit ka"tte saada? // Siis saaks teha midagi stiilis: // g.setColor(g.getBackgroundColor()); g.setColor(Color.LIGHT_GRAY); g.fillRect(0, 40, j.f.getSize().height, j.f.getSize().width); g.setColor(Color.DARK_GRAY); // Yritame muliplierit ja kiirust textfieldidest lugeda. Kui ei 6nnestu, asendame // defaultidega ning kirjutame need ka vastavatesse tekstialadesse try { multiplier = Float.parseFloat(j.t1.getText()); } catch(Exception ex) { multiplier = 1; j.t1.setText(String.valueOf(multiplier)); } try { speed = Long.parseLong(j.t2.getText()); } catch(Exception ex) { speed = 1; j.t2.setText(String.valueOf(speed)); } // M6ningased vajalikud muutujad int x = 0; int y = 0; int oldx; int oldy; // Tsykkel 360 kraadi jagu for (int m = 0; m <= 360; m++) { // Kui tegu k6ige esimese joonekesega, siis paneme oldx == x if (x == 0) { oldx = (int) (200 + 150 * Math.cos(Math.toRadians(m))); oldy = (int) (200 + 150 * Math.sin(Math.toRadians(m) * multiplier)); // Vastasel juhul ja"tame meelde x ja y vanad koordinaadid } else { oldx = x; oldy = y; } // Genereerime koordinaadid x = (int) (200 + 150 * Math.cos(Math.toRadians(m))); y = (int) (200 + 150 * Math.sin(Math.toRadians(m) * multiplier)); // Joonistame joonekese if ((m % 2) == 0) g.setColor(Color.BLACK); else g.setColor(Color.GREEN); g.drawLine(oldx, oldy, x, y); // Ja magame pisut try { Thread.sleep(speed); } catch (InterruptedException e1) { e1.printStackTrace(); } } } } // Aken pandi kinni. Meie paneme selle peale pillid kotti. class WHandler extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } }