Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package exam5;
- import javax.sound.sampled.Line;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.geom.Ellipse2D;
- import java.awt.geom.Line2D;
- import java.awt.geom.Point2D;
- import java.awt.geom.Rectangle2D;
- /**
- * Created by IntelliJ IDEA.
- * User: алексей
- * Date: 13.03.11
- * Time: 20:15
- * To change this template use File | Settings | File Templates.
- */
- public class MayatnicFrame extends JFrame {
- Toolkit tk;
- Dimension d;
- public MayatnicFrame() {
- tk = Toolkit.getDefaultToolkit();
- d = tk.getScreenSize();
- setBounds(d.width / 4, d.height / 4, d.width / 2, d.height / 2);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //System.out.println(getWidth());
- add(new Mac(getWidth(), getHeight()));
- }
- public static void main(String[] args) {
- MayatnicFrame ma = new MayatnicFrame();
- ma.setVisible(true);
- }
- }
- class Mac extends JPanel {
- Ellipse2D el;
- Rectangle2D r;
- //Point2D g;
- Line2D line;
- double angle = 0;
- int count = 0;
- boolean back = false;
- Timer t;
- public Mac(double w, double h) {
- el = new Ellipse2D.Double();
- el.setFrameFromCenter(w / 2, h / 2, w / 2 + 70, h / 2 + 70);
- line = new Line2D.Double(w / 2, 0, el.getCenterX(), el.getCenterY());
- t = new Timer(20, new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if(count == 45){
- JOptionPane.showMessageDialog(null, "Маятник остановился!");
- System.exit(0);
- }
- if (angle > 45 - count) {
- back = true;
- System.out.println(count);
- angle--;
- count++;
- }
- if (angle < -45 + count) {
- back = false;
- System.out.println(count);
- angle++;
- count++;
- }
- if (back) {
- angle--;
- } else {
- angle++;
- }
- repaint();
- }
- });
- addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- if (r.contains(e.getPoint())) {
- if (t.isRunning()) {
- t.stop();
- } else {
- t.start();
- }
- }
- }
- });
- }
- public void paintComponent(Graphics g) {
- super.paintComponent(g);
- Graphics2D g2 = (Graphics2D) g;
- g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- g2.rotate(Math.toRadians(angle), line.getX1(), line.getY1());
- g2.draw(line);
- g2.setPaint(Color.PINK);
- g2.fill(el);
- r = el.getBounds2D();
- }
- }
Add Comment
Please, Sign In to add comment