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()来画黑圆,通过起始位置的变化来改变黑圆的位置,结果一直考虑怎么用代码画出一个圆然后改变坐标的值,这样做明显很不容易实现。
效果:
总结
有关eclipse包和类的创建这里就不说了,代码中有一点小瑕疵,大家可自行导入类。
详解Java编写并运行spark应用程序的方法
Java小程序求圆的周长和面积实例
Java小程序计算圆周率代码
感谢朋友们对本站的支持。
来源:http://blog.csdn.net/u012859681/article/details/36474899
标签:java,小程序,基础
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JAVA技术实现上传下载文件到FTP服务器(完整)
2023-08-26 15:35:43
详解SpringBoot2.0的@Cacheable(Redis)缓存失效时间解决方案
2023-07-23 07:20:54
![](https://img.aspxhome.com/file/2023/5/108365_0s.png)
java集合继承关系图分享
2023-04-25 17:17:23
![](https://img.aspxhome.com/file/2023/0/67480_0s.png)
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
![](https://img.aspxhome.com/file/2023/4/114354_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/3/91473_0s.jpg)
java 二叉查找树实例代码
2022-07-23 22:54:28
Java二维数组与稀疏数组相互转换实现详解
2022-10-28 07:27:33
![](https://img.aspxhome.com/file/2023/0/63990_0s.png)
java中动态 代理的实现
2023-11-17 16:16:25
JavaMail实现带附件的邮件发送
2021-10-21 15:00:09
![](https://img.aspxhome.com/file/2023/9/61919_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/6/137346_0s.png)