`

GUI模拟小球运动过程

阅读更多
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JFrame;

/**

 * 类说明:编写一个Java GUI应用程序,采用Java多线程技术,模拟自由落体和平抛运动:
 * 一个球自由落下,一个球水平抛出。(本题30分)
 * (自由落体物理公式:h= g *t2/2 ;平抛运动物理公式:h= g *t2/2 ,x=26*t ;
 *  h代表高度,t代表时间,g代表重力加速度=9.8
 * m/s2 )
 */

public class BallCanvas extends Canvas implements Runnable {

      private static final long serialVersionUID = 1L;
      private int h = 0;// 高度
      private final float G = 9.8f;// 重力加速度
      private final int D = 20;// 小球直径
      private float t = 0;// 时间
      private int x = 0;// 水平位移
      private int v = 36;// 平抛初始速度
      public BallCanvas() {

         new Thread(this).start();
      }
      @Override
      public void run() {

    	  // 利用线程的死循环模拟小球运动过程
           while (true) {
             t += 0.2;
             x = (int) (v * t);// 水平位移
             h = (int) (G * t * t / 2);// 下落高度
             repaint();
             if (x > this.getWidth() || h > this.getHeight()) {
            	 t = 0;
            	 x = 0;
            	 h = 0;
            }
            try {
                 Thread.sleep(85);
            } catch (InterruptedException e) {
            	e.printStackTrace();
            }
    }

}
	@Override
	public void paint(Graphics g) {
	
	    // 重新绘制屏幕
	   // g.setColor(Color.white);
	  // g.fillRect(0, 0, this.getWidth(), this.getHeight());
	   //  画出小球图形
	   g.setColor(Color.red);
	   g.fillArc(x, h, D, D, 0, 360);
	   g.setColor(Color.blue);
	   g.fillArc(0, h, D, D, 0, 360);
	}

	
	public static void main(String[] args) {
	
		// 创建出可视化窗口
	   JFrame frame = new JFrame("我的小球");
	   // 获得该窗口的容器
	   Container con = frame.getContentPane();
	   // 往该容器中添加Canvas组件
	   // Canvas 组件表示屏幕上一个空白矩形区域,
	   // 应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。
	   con.add(new BallCanvas(), BorderLayout.CENTER);
	   
	   //将组件的首选大小设置为常量值 
	   frame.setPreferredSize(new Dimension(400, 400));
	   frame.setVisible(true);
	   //确保组件具有有效的布局。
	   frame.validate();
	   // 将窗口设置为屏幕正中央
	   frame.setLocationRelativeTo(null);
	   // 设置窗口关闭按钮操作有效
	   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   frame.pack();
	
	}
}

分享到:
评论

相关推荐

    运动学基于matlab GUI模拟小球自由落体【含Matlab源码 1630期】.zip

    CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:ball.m; 调用函数:其他m文件;无需运行 运行结果效果图;...运动学:倒立摆、泊车 天体学:卫星轨道、姿态

    aaa.zip_小球_小球动态运动轨迹模型GUI设计_运动_运动轨迹_音乐文件读取

    这个设计旨在创建一个交互式的图形用户界面(GUI),用于模拟小球的运动轨迹,并结合音乐文件的读取功能,为用户提供一种独特的视听体验。 首先,我们要了解GUI设计的基本概念。GUI(图形用户界面)是用户与计算机...

    VC++模拟小球碰撞

    在本文中,我们将深入探讨如何使用VC++6.0中的MFC(Microsoft Foundation Classes)库来模拟小球碰撞的过程。MFC是微软提供的一套C++类库,它简化了Windows应用程序的开发,特别是图形用户界面(GUI)的构建。 首先...

    【运动学】 GUI模拟小球自由落体【含Matlab源码 1630期】.zip

    Matlab领域上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 ...运动学:倒立摆、泊车 天体学:卫星轨道、姿态 船舶:控制、运动 电磁学:电场分布、电偶极子、永磁同步、变压器

    在VS环境中利用C#在窗体中实现小球的往返运动

    7. **小球运动逻辑**:小球的运动由速度和方向决定。每次定时器触发时,根据当前速度和方向更新小球的位置。当小球到达边界时,需要反转X或Y轴上的速度,模拟反弹效果。 8. **代码结构**:为了保持代码的清晰和可...

    小球沿曲线运动的课设论文

    本课程设计旨在利用Java语言,通过绘制二次函数曲线y=a*x^2+b*x+c,模拟小球沿抛物线轨迹的动态运动。下面我们将详细探讨这一项目的实现细节和技术要点。 首先,程序的核心在于绘制函数曲线。Java提供了丰富的图形...

    java多线程控制小球程序

    2. **小球运动逻辑**:在`run()`方法中,我们可以使用循环来模拟小球的持续运动。根据物理规则,小球每次碰撞边界时会改变方向,速度可能会有变化(考虑弹性碰撞)。这里可以使用`Thread.sleep()`方法来控制线程暂停...

    Matlab GUI技术在小球振动实验可视化中的应用.pdf

    Matlab提供了强大的数值计算功能和丰富的函数库,可以有效地解微分方程,获取小球运动的位移数据。通过分析模拟程序的运行效率,可以对程序进行针对性优化,如调整算法、减少循环次数等方法,来提高程序的运行速度,...

    java写的小球摇摆运动

    在Java编程语言中,"小球摇摆运动"通常指的是创建一个模拟物理世界中小球摆动的动画效果。这个项目可能会结合图形用户界面(GUI)技术,如Java Swing或JavaFX,来展示一个小球在虚拟空间中的摇摆动作。下面我们将...

    用java编程来回运动的小球

    我们可以使用`g.fillOval(x, y, width, height)`来填充一个椭圆,模拟小球的形状。 3. **事件处理**: 小球的运动需要定时器(Timer)来触发。Java的javax.swing.Timer类可以定期执行指定的任务,例如每间隔一定时间...

    模拟自由落体运动和平抛运动

    GUI线程——模拟小球自由落体和平抛运动,一个小球自由落下,一个小球水平抛出

    matlab.zip_matlab 小球运动_matlab 红色连线_matlab螺旋动画_woolpck_小球沿一条封闭路径下

    "小球运动"这部分可能涉及到MATLAB的图形用户界面(GUI)或者简单的命令行编程,通过编程控制小球的位置和速度,使其在指定路径上移动。这通常需要利用MATLAB的图形函数,如`plot`或`scatter`来绘制小球,以及`...

    小球平抛运动和自由落体运动

    对于"小球"这个标签,可能意味着程序在模拟过程中考虑了小球的物理特性,比如质量、形状和尺寸,以及可能的空气阻力影响。尽管描述中没有明确指出,但这些因素可以增加模拟的真实感和准确性。 文件列表中只有一个...

    运动小球,时钟JAVA实现

    在Java编程语言中,开发动态应用,如模拟运动小球或创建电子时钟,涉及到多个核心概念和技术。这里,我们将深入探讨如何使用Java来实现这些功能。 首先,"运动小球"的实现主要依赖于图形用户界面(GUI)和动画处理...

    基于Windows开发语言的小球左右滑动,主要是沿着抛物线进行运动

    2. **图形绘制**:在Windows API中,通常使用`BeginPaint`和`EndPaint`函数来初始化和结束绘画过程,然后通过`FillSolidRect`填充颜色,`MoveToEx`和`LineTo`绘制线条来实现小球的运动轨迹。如果使用Qt等库,可以...

    基于c++MFC实现的小球碰撞

    小球碰撞的模拟通常涉及到物理学中的运动学和动力学知识。根据牛顿的运动定律,当两个小球碰撞时,它们的动量会守恒。在二维空间中,这通常意味着碰撞前后系统的总动量(质量和速度的乘积)在水平和垂直方向上的分量...

    小球在正弦曲线上运动.zip

    标题中的"小球在正弦曲线上运动.zip"是一个基于VC6.0的MFC(Microsoft Foundation Classes)项目,它展示了如何用C++编程语言创建一个动态模拟,使得一个小球沿着正弦函数的图形轨迹移动。这个项目对于初学者来说是...

    Itat第三届复赛自由落体与平抛答案

    在本项目"Itat第三届复赛自由落体与平抛答案"中,开发者通过编写程序来模拟物理中的自由落体和平抛运动,以此加深对Java编程语言的理解,特别是面向对象、多线程以及图形用户界面(GUI)的应用。以下是这些知识点的...

    java窗体内的弹性小球

    在这个项目中,我们通常会创建一个`JFrame`作为主窗口,然后在其上添加一个`JPanel`作为小球运动的画布。`JPanel`允许自定义绘图,这正是我们需要的。 在`JPanel`的`paintComponent`方法中,我们将重写以绘制小球。...

    小球自由落体JAVA源码

    综上所述,"小球自由落体JAVA源码"项目涵盖了多线程编程、线程池管理、物理模拟、GUI设计、事件处理和并发控制等多个Java编程的关键知识点,是一个很好的学习和实践平台。通过深入理解并分析该项目,开发者可以提升...

Global site tag (gtag.js) - Google Analytics