Java- 简单接触Applet
Applet是在游览器执行Java程序的,他类似于插件,例如像ActiveX插件。Applet程序里运行的是各种不同的AWT方法,例如drawString。
简单的了解一下Applet的应用,先来运行一段简单的Applet小程序
import java.applet.Applet; import java.awt.Graphics; public class test1 extends Applet { public void paint(Graphics g){ g.drawString("Hello Java", 0, 30); } }
首先一个类要先继承Applet,这个类才拥有Applet的全部功能。想使用Applet在游览器上输出一段文字,必需在paint方法里实现,使用drawString方法。接着我们在生成test1.class的同级目录下创建一个HTML文件。文件里加如下代码:<applet code="test1" height="300" width="300"></applet> 。这时打开游览器就能看到游览器画出了HELLO JAVA这段文字了。
下面四个方法:init(),start(),stop(),destory()是由Applet定义的,paint()方法是由AWT组件类定义的,这五个方法组成了程序的基本主框架
init()方法使用示例,画线例子
import java.applet.Applet; import java.awt.Graphics; import java.awt.event.*; public class test1 extends Applet { public void paint(Graphics g){ g.drawString("Hello Java",0,30); } public void init(){ addMouseListener(new MouseAdapter(){ int orgX; int orgY; public void mousePressed(MouseEvent e){ orgX = e.getX(); orgY = e.getY(); } public void mouseReleased(MouseEvent e){ getGraphics().drawLine(orgX, orgY, e.getX(), e.getY()); } }); } }
结合线程来创建动画例子,每隔一段时间,不停显示1-9的例子
import java.applet.Applet; import java.awt.Font; import java.awt.Graphics; import java.awt.event.*; public class test1 extends Applet implements Runnable { int index=0; public void paint(Graphics g){ g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30)); g.drawString(""+index,0,60); } public void init(){ new Thread(this).start(); } public void run(){ while(true){ try { Thread.sleep(100); index = (index + 1) % 10; repaint(); } catch (InterruptedException e) { e.printStackTrace(); } } } }
调用repaint方法时,程序先清除以前画的内容,然后调用paint方法进行重画。
来看一下上面张图片,可以看出调用repaint方法下面会去调用update方法,那么update方法的作用是什么?他的作用就是清除组件表面内容,然后调用paint引起窗体重画。如果我们想不调用repaint方法,直接使用update方法,那么我们必须自已手动去清除画面,并进行重画,所以需要实现一个update方法,例如下面这样:
public class test1 extends Applet implements Runnable { int index=0; public void paint(Graphics g){ g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30)); g.drawString(""+index,0,60); } public void init(){ new Thread(this).start(); } public void run(){ while(true){ try { Thread.sleep(100); index = (index + 1) % 10; update(); } catch (InterruptedException e) { e.printStackTrace(); } } } public void update() { //... paint(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具