【java】java实现钟摆,可控制摆动的速度
来源:互联网 发布:淘宝上怎么买衣服 编辑:程序博客网 时间:2024/05/16 01:02
java实现中摆的方式比较简单,但是我开始做的时候没有接触过动画,将种摆的模型画出来是很简单的,但是让它动起来是有一定难度的。
代码如下:
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JFrame { private KeyboardPanel keyboardPanel = new KeyboardPanel(); /** Initialize UI */ public Test() { // Add the keyboard panel to accept and display user input add(keyboardPanel); // Set focus keyboardPanel.setFocusable(true); } /** Main method */ public static void main(String[] args) { Test frame = new Test(); frame.setTitle("回文摆");frame.setSize(300, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true); } // Inner class: KeyboardPanel for receiving key input static class KeyboardPanel extends JPanel { private int x1 = 150; private int y1 = 20; private int x2 = 150; private int y2 = 220; int leftAngle = 120; int rightAngle = 60; int angle = leftAngle; // Start from leftAngle int angleDelta = 1; // Swing interval int delay = 100; Timer timer = new Timer(delay, new ActionListener() { public void actionPerformed(ActionEvent e) { repaint(); } }); public KeyboardPanel() { timer.start(); addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_DOWN: delay += 20; break; case KeyEvent.VK_UP: delay -= 20; break; case KeyEvent.VK_S: timer.stop(); break; case KeyEvent.VK_R: timer.start(); break; } if (delay < 0) delay = 10; // delay不能为负 timer.setDelay(delay); } }); setFocusable(true); } protected void paintComponent(Graphics g) { super.paintComponent(g); if (angle < rightAngle) angleDelta = 1; // 从左开始摆动 else if (angle > leftAngle) angleDelta = -1; // 从右开始摆动 angle += angleDelta; String Message = "当前延迟:"+delay+" ms"; g.drawString(Message, 10, 20); g.drawLine(x1, y1, x2, y2); g.setColor(Color.BLACK); g.fillOval(x2-10, y2, 20, 20); double length = 200; x2 = x1 + (int)(length * Math.cos(Math.toRadians(angle))); y2 = y1 + (int)(length * Math.sin(Math.toRadians(angle))); } }}
读者可以自己试试。
10 0
- 【java】java实现钟摆,可控制摆动的速度
- Java实现-摆动排序1
- JAVA web实现可控制定时器
- 只需java编程,就可实现工业自动化控制的Android工业平板电脑开发
- lintcode 摆动排序(Wiggle Sort) (Java)
- Android自定义View: 如何实现类钟摆的动画效果?
- Android录音时指针摆动的实现
- Android录音时指针摆动的实现
- Android录音时指针摆动的实现
- css3 实现自由摆动的立方体
- JAVA的速度
- Android开发模板------ViewPager(三):实现无限循环、可嵌套RecyclerView、可控制滑动速度
- (转)人工智能的钟摆
- CSS3实现钟摆动态效果
- 运用CSS3实现钟摆效果
- Java实现QPS控制
- java实现远程控制
- Java实现控制输入
- Interface use
- Magento前端开发指南(一)
- KMP算法
- ROS学习--人脸识别NODE
- java反射机制的学习
- 【java】java实现钟摆,可控制摆动的速度
- 第七章:多线程
- Advice for students of machine learning (written by David Mimno)
- crt等访问liunx慢
- NanoPi2 试用体验(二)
- [Leetcode]Intersection of Two Arrays II
- android6.21Activity和返回栈
- FTP服务搭建
- PCH问题处理最新方法