Guest User

Untitled

a guest
Feb 18th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package exam5;
  6.  
  7. import javax.sound.sampled.Line;
  8. import javax.swing.*;
  9. import java.awt.*;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.MouseAdapter;
  13. import java.awt.event.MouseEvent;
  14. import java.awt.event.MouseListener;
  15. import java.awt.geom.Ellipse2D;
  16. import java.awt.geom.Line2D;
  17. import java.awt.geom.Point2D;
  18. import java.awt.geom.Rectangle2D;
  19.  
  20. /**
  21. * Created by IntelliJ IDEA.
  22. * User: алексей
  23. * Date: 13.03.11
  24. * Time: 20:15
  25. * To change this template use File | Settings | File Templates.
  26. */
  27. public class MayatnicFrame extends JFrame {
  28.  
  29. Toolkit tk;
  30. Dimension d;
  31.  
  32. public MayatnicFrame() {
  33. tk = Toolkit.getDefaultToolkit();
  34. d = tk.getScreenSize();
  35. setBounds(d.width / 4, d.height / 4, d.width / 2, d.height / 2);
  36. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37. //System.out.println(getWidth());
  38. add(new Mac(getWidth(), getHeight()));
  39. }
  40.  
  41. public static void main(String[] args) {
  42. MayatnicFrame ma = new MayatnicFrame();
  43. ma.setVisible(true);
  44. }
  45. }
  46.  
  47. class Mac extends JPanel {
  48.  
  49. Ellipse2D el;
  50. Rectangle2D r;
  51. //Point2D g;
  52. Line2D line;
  53. double angle = 0;
  54. int count = 0;
  55. boolean back = false;
  56. Timer t;
  57.  
  58. public Mac(double w, double h) {
  59. el = new Ellipse2D.Double();
  60. el.setFrameFromCenter(w / 2, h / 2, w / 2 + 70, h / 2 + 70);
  61.  
  62. line = new Line2D.Double(w / 2, 0, el.getCenterX(), el.getCenterY());
  63. t = new Timer(20, new ActionListener() {
  64.  
  65. public void actionPerformed(ActionEvent e) {
  66. if(count == 45){
  67. JOptionPane.showMessageDialog(null, "Маятник остановился!");
  68. System.exit(0);
  69. }
  70. if (angle > 45 - count) {
  71. back = true;
  72. System.out.println(count);
  73. angle--;
  74. count++;
  75. }
  76. if (angle < -45 + count) {
  77. back = false;
  78. System.out.println(count);
  79. angle++;
  80. count++;
  81. }
  82. if (back) {
  83. angle--;
  84. } else {
  85. angle++;
  86. }
  87. repaint();
  88. }
  89. });
  90. addMouseListener(new MouseAdapter() {
  91.  
  92. public void mouseClicked(MouseEvent e) {
  93. if (r.contains(e.getPoint())) {
  94. if (t.isRunning()) {
  95. t.stop();
  96. } else {
  97. t.start();
  98. }
  99. }
  100. }
  101. });
  102. }
  103.  
  104. public void paintComponent(Graphics g) {
  105. super.paintComponent(g);
  106. Graphics2D g2 = (Graphics2D) g;
  107. g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  108. g2.rotate(Math.toRadians(angle), line.getX1(), line.getY1());
  109. g2.draw(line);
  110. g2.setPaint(Color.PINK);
  111. g2.fill(el);
  112. r = el.getBounds2D();
  113. }
  114. }
Add Comment
Please, Sign In to add comment