Java編程實現(xiàn)月食簡單代碼分享
用java的框架和面板的知識做的一個展示月食過程的小程序。這里的想法就是先把背景設(shè)置成黑色,然后畫一個黃色的圓作為月亮,接著畫一個黑色的圓,將它的y坐標與月亮相同,讓這個x不斷的自增,(這個x代表的是fillArc()里面的那個其實位置坐標)然后很關(guān)鍵的兩個方法是sleep()和repaint()這兩個,它們可以近似于讓屏幕的內(nèi)容不斷的刷新,當與月亮重合時,黑色就會覆蓋掉黃色,這樣就讓人覺得是月亮在變化。
有興趣的朋友可以添加更多元素在里面。
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();
}
//刷新屏幕,自動調(diào)用paint()方法
repaint();
}
}
}
.start();
}
public void paint(Graphics g){
super.paint(g);
//設(shè)置背景
this.setBackground(Color.black);
//月亮
g.setColor(Color.yellow);
g.fillArc(500, 100, 200, 200, 0, 360);
//設(shè)置將去覆蓋月亮的黑色圓
g.setColor(Color.black);
g.fillArc(x, 100, 200, 200, 0, 360);
}
}
之前一直沒想到用fillArc()來畫黑圓,通過起始位置的變化來改變黑圓的位置,結(jié)果一直考慮怎么用代碼畫出一個圓然后改變坐標的值,這樣做明顯很不容易實現(xiàn)。
效果:

總結(jié)
有關(guān)eclipse包和類的創(chuàng)建這里就不說了,代碼中有一點小瑕疵,大家可自行導(dǎo)入類。
以上就是本文關(guān)于Java編程實現(xiàn)月食簡單代碼分享的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
感謝朋友們對本站的支持。
相關(guān)文章
SpringMVC HttpMessageConverter報文信息轉(zhuǎn)換器
??HttpMessageConverter???,報文信息轉(zhuǎn)換器,將請求報文轉(zhuǎn)換為Java對象,或?qū)ava對象轉(zhuǎn)換為響應(yīng)報文。???HttpMessageConverter???提供了兩個注解和兩個類型:??@RequestBody,@ResponseBody???,??RequestEntity,ResponseEntity??2023-01-01
Spring系列中的beanFactory與ApplicationContext
這篇文章主要介紹了Spring系列中的beanFactory與ApplicationContext,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09

