Java编程实现月食简单代码分享

作者:Zorrooooo 时间:2022-12-27 12:33:24 

用java的框架和面板的知识做的一个展示月食过程的小程序。这里的想法就是先把背景设置成黑色,然后画一个黄色的圆作为月亮,接着画一个黑色的圆,将它的y坐标与月亮相同,让这个x不断的自增,(这个x代表的是fillArc()里面的那个其实位置坐标)然后很关键的两个方法是sleep()和repaint()这两个,它们可以近似于让屏幕的内容不断的刷新,当与月亮重合时,黑色就会覆盖掉黄色,这样就让人觉得是月亮在变化。

有兴趣的朋友可以添加更多元素在里面。


import javax.swing.JFrame;
public class MyMoonFrame {
public static void main(String[] args) {
JFrame frame= new JFrame();
frame.setSize(1024,768);
frame.setLocation(100,100);
MyMoonPanel panel=new MyMoonPanel();
frame.add(panel);
panel.startRun();
frame.setVisible(true);
}
}

这是panel文件


package day3;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class MyMoonPanel extends JPanel{
int x=700;
public void startRun(){
new Thread(){
public void run(){
while(true){
//让要去覆盖月亮的黑圆的横坐标坐标不断自增
//这样去接近月亮和远离,造成月亮变化的效果
for (int i=0;i<1024;i++){
x++;
if(x>1024){
x=0;
}
}
try {
//让线程休眠10毫秒
Thread.sleep(10);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//刷新屏幕,自动调用paint()方法
repaint();
}
}
}
.start();
}
public void paint(Graphics g){
super.paint(g);
//设置背景
this.setBackground(Color.black);
//月亮
g.setColor(Color.yellow);
g.fillArc(500, 100, 200, 200, 0, 360);
//设置将去覆盖月亮的黑色圆
g.setColor(Color.black);
g.fillArc(x, 100, 200, 200, 0, 360);
}
}

之前一直没想到用fillArc()来画黑圆,通过起始位置的变化来改变黑圆的位置,结果一直考虑怎么用代码画出一个圆然后改变坐标的值,这样做明显很不容易实现。

效果:

Java编程实现月食简单代码分享

总结

有关eclipse包和类的创建这里就不说了,代码中有一点小瑕疵,大家可自行导入类。

详解Java编写并运行spark应用程序的方法

Java小程序求圆的周长和面积实例

Java小程序计算圆周率代码

感谢朋友们对本站的支持。

来源:http://blog.csdn.net/u012859681/article/details/36474899

标签:java,小程序,基础
0
投稿

猜你喜欢

  • JAVA技术实现上传下载文件到FTP服务器(完整)

    2023-08-26 15:35:43
  • 详解SpringBoot2.0的@Cacheable(Redis)缓存失效时间解决方案

    2023-07-23 07:20:54
  • java集合继承关系图分享

    2023-04-25 17:17:23
  • java判断list不为空的实现,和限制条数不要在一起写

    2022-01-24 13:14:38
  • 通过String.intern()方法浅谈堆中常量池

    2022-07-06 05:14:01
  • java金钱处理方法实例详解

    2023-05-29 10:38:29
  • Android根据不同身份配置APP对应的不同模块方法

    2023-09-25 05:22:36
  • Springboot如何操作redis数据

    2022-05-30 21:36:41
  • SpringBoot集成EasyExcel的步骤

    2023-07-19 09:59:17
  • Android Studio快捷键生成TAG、Log.x日志输出介绍

    2022-03-14 02:10:37
  • flutter使用tauri实现一个一键视频转4K软件

    2022-10-23 05:46:42
  • 浅谈C#跨线程调用窗体控件(比如TextBox)引发的线程安全问题

    2022-03-16 06:35:41
  • Java 日志打印的15个好建议

    2021-09-08 17:57:42
  • java 二叉查找树实例代码

    2022-07-23 22:54:28
  • Java二维数组与稀疏数组相互转换实现详解

    2022-10-28 07:27:33
  • java中动态 代理的实现

    2023-11-17 16:16:25
  • JavaMail实现带附件的邮件发送

    2021-10-21 15:00:09
  • Java中equalsIgnoreCase()方法的使用

    2022-07-28 15:13:45
  • Kotlin高阶函数reduce与fold使用实例

    2023-04-27 22:17:11
  • Android—基于微信开放平台v3SDK开发(微信支付填坑)

    2023-05-20 09:04:02
  • asp之家 软件编程 m.aspxhome.com