【代码完善优化】模拟绘制一转动中的小风扇-----互相学习促进!谢谢~

问题描述

模拟绘制一转动中的小风扇在窗口中绘制具有4个叶片的风扇;用Timer或多线程程序设计实现叶片的转动;设置启动、停止按钮,定义一个滚动条控制叶片的转速。各位大侠帮我完善和优化一下下面的代码,实现一下加速的真实模拟和浮动文字的多线程方法!请大家多多指教~packageACM;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassDrawArcs22extendsJFrameimplementsActionListener{publicArcsPanelarc;publicJButtonstart,end;publicJSliderslider;publicJPanelbtnPanel;publicvoidInitBtnPanel(){start=newJButton("开始");start.addActionListener(this);end=newJButton("暂停");end.addActionListener(this);slider=newJSlider(0,100,10);btnPanel=newJPanel();btnPanel.setBorder(BorderFactory.createTitledBorder("控制操作:"));btnPanel.setLayout(newGridLayout(1,3));btnPanel.add(start);btnPanel.add(end);btnPanel.add(slider);}publicDrawArcs22(){setTitle("DrawArcs");//Timert=newTimer(1000,arc);arc=newArcsPanel(20);this.InitBtnPanel();//arc.Start();getContentPane().add(arc);this.add(btnPanel,BorderLayout.NORTH);}publicstaticvoidmain(String[]args){DrawArcs22frame=newDrawArcs22();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//frame.arc.Start();frame.setSize(250,300);frame.setVisible(true);}publicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubif(e.getSource()==start){this.arc.rotate=true;Threadt=newThread(this.arc);t.start();}else{//if(t!=null)this.arc.rotate=false;}}}classArcsPanelextendsJPanelimplementsRunnable{publicintclockwise=-1;publicintstart=0;publicbooleanrotate=true;publicArcsPanel(intstart){this.start=start;//t=newTimer(1000,this);//this.t=t;}protectedvoidpaintComponent(Graphicsg){super.paintComponent(g);g.setColor(Color.green);intxCenter=getWidth()/2;intyCenter=getHeight()/2;intradius=(int)(Math.min(getWidth(),getHeight())*0.4);intx=xCenter-radius;inty=yCenter-radius;g.setColor(Color.BLUE);g.fillArc(x,y,2*radius,2*radius,this.start%360,30*this.clockwise);g.setColor(Color.ORANGE);g.fillArc(x,y,2*radius,2*radius,(this.start+90)%360,30*this.clockwise);g.setColor(Color.RED);g.fillArc(x,y,2*radius,2*radius,(this.start+180)%360,30*this.clockwise);g.setColor(Color.GREEN);g.fillArc(x,y,2*radius,2*radius,(this.start+270)%360,30*this.clockwise);}publicvoidrun(){//TODOAuto-generatedmethodstubwhile(rotate){try{Thread.sleep(59);}catch(Exceptione){e.printStackTrace();}this.start+=30;this.start%=360;this.repaint();}}}

解决方案

解决方案二:
各位大侠帮我完善和优化一下下面的代码,实现一下加速的真实模拟和浮动文字的多线程方法!请大家多多指教~importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassDrawArcs22extendsJFrameimplementsActionListener{publicArcsPanelarc;publicJButtonstart,end;publicJSliderslider;publicJPanelbtnPanel;publicvoidInitBtnPanel(){start=newJButton("开始");start.addActionListener(this);end=newJButton("暂停");end.addActionListener(this);slider=newJSlider(0,100,10);btnPanel=newJPanel();btnPanel.setBorder(BorderFactory.createTitledBorder("控制操作:"));btnPanel.setLayout(newGridLayout(2,7));btnPanel.add(start);btnPanel.add(end);btnPanel.add(slider);}publicDrawArcs22(){//Timert=newTimer(1000,arc);arc=newArcsPanel(20);this.InitBtnPanel();//arc.Start();getContentPane().add(arc);this.add(btnPanel,BorderLayout.NORTH);}publicstaticvoidmain(String[]args){DrawArcs22frame=newDrawArcs22();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//frame.arc.Start();frame.setSize(350,400);frame.setLocation(550,150);frame.setTitle("模拟加速小风扇");frame.setVisible(true);}publicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubif(e.getSource()==start){this.arc.rotate=true;Threadt=newThread(this.arc);t.start();}else{//if(t!=null)this.arc.rotate=false;}}}classArcsPanelextendsJPanelimplementsRunnable{publicintclockwise=-1;publicintstart=0;publicbooleanrotate=true;publicArcsPanel(intstart){this.start=start;//t=newTimer(1000,this);//this.t=t;}protectedvoidpaintComponent(Graphicsg){super.paintComponent(g);g.setColor(Color.green);intxCenter=getWidth()/2;intyCenter=getHeight()/2;intradius=(int)(Math.min(getWidth(),getHeight())*0.4);intx=xCenter-radius;inty=yCenter-radius;g.setColor(Color.BLUE);g.fillArc(x,y,2*radius,2*radius,this.start%360,30*this.clockwise);g.setColor(Color.ORANGE);g.fillArc(x,y,2*radius,2*radius,(this.start+90)%360,30*this.clockwise);g.setColor(Color.RED);g.fillArc(x,y,2*radius,2*radius,(this.start+180)%360,30*this.clockwise);g.setColor(Color.GREEN);g.fillArc(x,y,2*radius,2*radius,(this.start+270)%360,30*this.clockwise);}publicvoidrun(){//TODOAuto-generatedmethodstubwhile(rotate){try{Thread.sleep(59);}catch(Exceptione){e.printStackTrace();}this.start+=30;this.start%=360;this.repaint();}}}

时间: 2024-10-28 00:12:54

【代码完善优化】模拟绘制一转动中的小风扇-----互相学习促进!谢谢~的相关文章

嵌入式实时程序设计中C/C++代码的优化

1 引言 计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用. 嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体.具有软件代码小.高度自动化.响应速度快等特点. 特别适合于要求实时和多任务的应用体系.嵌入式实时系统是目前蓬勃发展的行业之一. 但是,实时嵌入式系统的特点使得其软件受时间和空间的严格限制,加上运行环境复杂,使得嵌入式系统软件的开发变得异常困难. 为了设计一个满足功能.性能和死线要求的系统,为了开发

Java开发中程序和代码性能优化

现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升,在开发中注意这些,更多的是可以保持一种性能优先的意识. 一 条件控制语句中的优化 1.在循环中应该避免使用复杂的表达式. 在循环中,循环条件会被反复计算,应该避免把一些计算放在循环进行的部分中,程序将会运行的更快.比如: for(int i=0;i<list.size();i++) 可以改为 //我的电脑上,测试数量级在10^7,速度提升一倍. for(int i=0,len=li

软件测试中SQL代码的优化

1.使用索引可以快速的访问数据库表中的特定信息,索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓名(name)列.如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息.但是有些索引会因为SQL代码使用不当导致索引不被使用,所以在软件测试中我们应该纠正那些不当的SQL代码.以下就是sql代码需要优化的情况: (1)在主键上建了索引,查询条件主键使用or. select *from tb_user where fd_userid=19 o

js两侧图片代码为什么不兼容ff 在ie中正常显示

问题描述 js两侧图片代码为什么不兼容ff 在ie中正常显示 我是新手 js两侧图片代码为什么不兼容ff 在ie中正常显示,在ff中图片跑到网站下面了并且网页左下面只显示一张 请高手解决 js代码如下:function initEcAd() {document.all.AdLayer1.style.posTop = -200;document.all.AdLayer1.style.visibility = 'visible'document.all.AdLayer2.style.posTop =

浅析地方房产网站如何完善优化

最近很多做房产网站的站长都抱怨站点被降权,网站不能从搜索引擎获得更多的流量,房地产网站到底要怎么完善优化,才能更多的获得用户,经过笔者对房产网站的实践,要想提高房产网的流量和权重,也不是件特别难的事情,站内的优化可以分以下几个步骤. 切忌"**房产网"关键词堆积 房产网站对关键词的布局很容易出现堆积,大量的关键词堆积现象肯定会引起被惩罚,为了避免关键词重复的现象,可以对关键词进行划分,把"**房产网"可以区分为:"**楼盘网","**房

手把手教你如何做代码外置优化

今日爆老师和大家分享的话题是<代码外置优化>.主要介绍代码外置的意义是什么,javascript代码外置优化怎么做,css代码合并怎么做. 首先来了解一下什么是代码外置吧.我们知道用户所看到的网站和搜索引擎蜘蛛看到的是不一样的,用户所看到的是从浏览器经过视觉化后的内容,所以会有文字,图片,动画,登陆等等.但搜索引擎蜘蛛看的是这些内容背后的原始代码(HTML),所以我们希望这些原始代码越是简易对于优化而言越是好,因为代码的简易度直接影响搜索引擎爬取效率,也就是页面是否被蜘蛛所喜爱,所收录. 基于

for-大神们,这样写容易内存溢出,这段代码怎么优化?1000张表,表结构相同,表名不同

问题描述 大神们,这样写容易内存溢出,这段代码怎么优化?1000张表,表结构相同,表名不同 raf = new RandomAccessFile(srcFilerw""); int index = 0; //获取imei数据 connection = getConnection(); String _sql = null; for(int i=0;i<10;i++){ _sql = ""select * from "" + "&q

匿名对象赋值-大神帮看一下代码,为什么t5 = addC(a1, a2)中,只调用了一次copy构造函数?

问题描述 大神帮看一下代码,为什么t5 = addC(a1, a2)中,只调用了一次copy构造函数? #include<iostream> using namespace std; class ABC { public: ABC(int a = 0, int b = 0) { this->a = a; this->b = b; printf("我是有参构造函数!n"); } ABC(ABC &c) { this->a = c.a; this-&g

模拟实现C语言中的内存管理_C 语言

这里模拟了C语言中的内存管理,当我们要创建或者使用一个对象时,那么这个对象会调用retain方法,计数+1,当我们要释放对象,我们会调用free,这里注意要对计数记性判断,如果是0的话,那么就会销毁. #import <Foundation/Foundation.h> int cnt = 0; void fun (charchar * p) { printf("%c\n",p[0]); } charchar * retain1(charchar * p) { //retai