- 浏览: 476262 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
谢谢你的祝福:
特地登陆上来感谢一下楼主,解决问题。
ORA-04098: 触发器无效且未通过重新验证问题 -
fuqiangjava:
写的不错 解决了自己的一个问题 谢谢了
ORA-00001:unique constraint (oracle 10g) -
hujinhuhujinhu:
make ...我有1.6.23
MyEclipse6.5安装自动提示功能的jQuery插件步骤 -
fool2011:
学习下,博主
JFreeChart类生成折线图的Java源代码 -
814687491:
你不是说的JQUERY吗?
MyEclipse6.5安装自动提示功能的jQuery插件步骤
使用说明如下:
1.在主区域的上面有一个写有"drawLine"的线形图标和几个图象图标,将鼠标移到图象图标上,光标变为手形,点击一下,取得需要绘制的图标
,然后移动到绘制区,右键鼠标就可以把选种的图标放置到相应位置;
2.当在主区域内放置的图标超过两个之后,点击工具栏上的drawLine线形图标,使之变色,然后分别点击主区域里的动态图标A和动态图标B,将会在A和B之间出现一条连线,根据顺序,先被点击的图标指向后被点击的图标,这里是A-->B,线段绘制完毕之后,线形图标恢复初始状态,必须再点击才能进行图标连线(注:一个图标可同时与多个图标连线);
3.把鼠标移动到主区域的动态图标上,光标变为移动形,点击鼠标,获取删除对象,按下键盘上的Delete键,就可以删除刚才选中的图标以及与它相连的所有线段。
4.在主区域双击鼠标右键,有子菜单可操作了。
注意事项:
1。必须把图片和该类放在同一目录下。否则,找不到图片了。
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.util.*; public class applet7 extends Applet { private static final long serialVersionUID = 1L; int count = 6; //装载的图片数量 Vector v = new Vector(); //储存绘图信息 Image[] img = new Image[count]; //把图片存入Image数组 int myWidth = 0, myHeight = 0; //箭头起点坐标 int widthcount = 0; //工具栏上图标之间隔 boolean[] b = new boolean[count]; int[] width = new int[count], height = new int[count], w = new int[count], h = new int[count], wid = new int[count], hei = new int[count], ww = new int[count], hh = new int[count]; int startX = 0, startY = 0, endX = 0, endY = 0; //绘制图标间连线的起点和终点坐标 Canvas startObj = null, endObj = null; //起点和终点动态图标 String drawclear = ""; //是否绘制连线及指向箭头 int clickX = 0, clickY = 0, moveX = 0, moveY = 0; //分别是点击和拖动动态图标时的坐标 canvas[] can = null; //动态图标数组 myCanvas[] mycan = new myCanvas[count]; //动态图标数组 Canvas curcan = null; //当前获得焦点的图标 Canvas curdelcan = null; //需要删除的当前图标 Image curimg = null; //当前焦点图标的图象 JPanel jp = new JPanel(null); //工具栏 myCanvas drawLine = new myCanvas("drawLine"); //用工具栏图标类myCanvas的文字构造器构造的线型图标 MediaTracker mt = new MediaTracker(this); //媒体对象,用于装载图象到内存 PopupMenu popMenu2=new PopupMenu(); //右键菜单 public void init() { img[0] = this.getImage(this.getCodeBase(), "1.gif"); //获取图象 img[1] = this.getImage(this.getCodeBase(), "2.gif"); img[2] = this.getImage(this.getCodeBase(), "1.jpg"); img[3] = this.getImage(this.getCodeBase(), "2.jpg"); img[4] = this.getImage(this.getCodeBase(), "3.jpg"); img[5] = this.getImage(this.getCodeBase(), "4.jpg"); this.resize(800, 600); //设置applet的尺寸,在浏览器里浏览根据html代码来设置 this.setLayout(null); //设置布局管理器,因为要移动图标的位置,因此设置为null for (int i = 0; i < img.length; i++) mt.addImage(img[i], 0); try { mt.waitForAll(); } catch (Exception ex) { System.err.println(ex.toString()); } //----------------在主区域绘制工具栏-------------------------------- this.add(jp); //添加工具栏 jp.setBounds(0, 0, 800, 80); //放置工具栏 jp.add(this.drawLine); //往工具栏上添加线型图标 jp.setBackground(new Color(230, 230, 230)); //设置线形图标背景 drawLine.setBounds(5, 5, 90, 30); //放置线形图标 //----------------在主区域绘制工具栏------结束----------------------- //----------------显示工具条中的项------------------------- for (int i = 0; i < img.length; i++) { mycan[i] = new myCanvas(img[i]); width[i] = img[i].getWidth(this); height[i] = img[i].getHeight(this); jp.add(mycan[i]); mycan[i].setBounds(100 + 5 * (i + 1) + widthcount, 5, img[i] .getWidth(this), img[i].getHeight(this)); widthcount += img[i].getWidth(this); } //----------------显示工具条中的项-----结束-------------------- //---------------------右键子菜单项---------------------------------- MenuItem menuItem1=new MenuItem("隐藏工具栏"); MenuItem menuItem2=new MenuItem("显示工具栏"); MenuItem menuItem3=new MenuItem("清空画面"); popMenu2.add(menuItem1); popMenu2.add(menuItem2); popMenu2.add(menuItem3); add(popMenu2); menuItem1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jp.setVisible(false); //隐藏工具条 } }); menuItem2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jp.setVisible(true); } }); menuItem3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //?????????????????? repaint(); //????? } } ); //---------------------右键子菜单项-------结束---------------------------- //用于绘制图标之间的线段 drawLine.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { clickdrawLine(e); } }); //---------------------鼠标监听事件------------------------------------------- this.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) //用于放置动态图标 { clickhere(e); } public void mouseReleased(MouseEvent e) { if(e.getButton()==MouseEvent.BUTTON3 && e.getClickCount()==2) { popMenu2.show(e.getComponent(),e.getX(),e.getY()); //显示右键菜单 } } }); //----------------------鼠标监听事件-----------结束----------------------------- } public void clickhere(MouseEvent e) { if(this.curcan == null) return; if(e.getModifiers() == MouseEvent.BUTTON3_MASK) //往绘图区添加动态图标,位置在鼠标点击时的坐标点 { Canvas ca = new canvas(curimg); this.add(ca); ca.setBounds(e.getX(), e.getY(), curimg.getWidth(this), curimg.getHeight(this)); this.validate(); curcan=null; } } public void clickdrawLine(MouseEvent e) { if (drawLine.getBackground().equals(new Color(230, 230, 255))) //可以绘制线段 { drawLine.setBackground(new Color(230, 230, 230)); startObj = null; endObj = null; drawclear = ""; } else //不可绘制线段 { drawLine.setBackground(new Color(230, 230, 255)); drawclear = "draw"; } } public void paint(Graphics g) { //绘制线段 for (int i = 0; i < v.size(); i++) { Vector v1 = (Vector) v.elementAt(i); startX = ((int[]) v1.elementAt(1))[0] + ((int[]) v1.elementAt(1))[2] / 2; startY = ((int[]) v1.elementAt(1))[1] + ((int[]) v1.elementAt(1))[3] / 2; endX = ((int[]) v1.elementAt(1))[4] + ((int[]) v1.elementAt(1))[6] / 2; endY = ((int[]) v1.elementAt(1))[5] + ((int[]) v1.elementAt(1))[7] / 2; g.drawLine(startX, startY, endX, endY); drawArrowhead(g, ((Canvas[]) v1.elementAt(0))[0], ((Canvas[]) v1 .elementAt(0))[1]); } } //绘制箭头 public void drawArrowhead(Graphics g, Canvas startObj, Canvas endObj) { double xx = 0, yy = 0, xx1 = 0, yy1 = 0, xx2 = 0, yy2 = 0; myWidth = myHeight = (int) Math.pow((double) (Math.pow(endObj .getWidth(), 2d) + Math.pow(endObj.getHeight(), 2d)), 1 / 2d) / 2; xx = endX - (endX - startX) * myWidth / Math.pow((double) (endX - startX) * (endX - startX) + (double) (endY - startY) * (endY - startY), 1 / 2d); yy = endY - (endY - startY) * myHeight / (Math.pow((double) (endX - startX) * (endX - startX) + (double) (endY - startY) * (endY - startY), 1 / 2d)); xx1 = xx - 20 * Math.cos(Math.atan(((double) yy - startY) / ((double) xx - startX)) - radians(30)); yy1 = yy - 20 * Math.sin(Math.atan(((double) yy - startY) / ((double) xx - startX)) - radians(30)); xx2 = xx - 20 * Math.sin(radians(60) - Math.atan(((double) (yy - startY)) / ((double) (xx - startX)))); yy2 = yy - 20 * Math.cos(radians(60) - Math.atan(((double) (yy - startY)) / ((double) (xx - startX)))); if (startObj.getX() + startObj.getWidth() / 2 > endObj.getX() + endObj.getWidth() / 2) { xx1 = xx + 20 * Math.cos(Math.atan(((double) yy - startY) / ((double) xx - startX)) - radians(30)); yy1 = yy + 20 * Math.sin(Math.atan(((double) yy - startY) / ((double) xx - startX)) - radians(30)); xx2 = xx + 20 * Math.sin(radians(60) - Math.atan(((double) (yy - startY)) / ((double) (xx - startX)))); yy2 = yy + 20 * Math.cos(radians(60) - Math.atan(((double) (yy - startY)) / ((double) (xx - startX)))); } g.fillPolygon(new int[] { (int) xx2, (int) xx1, (int) xx }, new int[] { (int) yy2, (int) yy1, (int) yy }, 3); } /** * 该函数用于将角度转化为弧度 */ public double radians(int degrees) { return ((double) degrees) * Math.PI / 180.0; } // ******************动态图标************************** class canvas extends Canvas { Image im = null; public canvas(Image im) //类体图形构造器 { super(); this.setCursor(new Cursor(Cursor.MOVE_CURSOR)); //设置鼠标悬浮样式,设立为移动形态 this.im = im; //注册鼠标按下事件,用于获取需要绘制的图标对象 this.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { clickcanvas(e); } }); /** * 动态图标键盘事件 */ this.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_DELETE) removecanvas(e); } }); /** * 动态图标鼠标移动和拖动事件 */ this.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { movecanvas(e); } }); } /** * 在两个图标之间绘制线段的同时储存这两个图标以及线段的信息 */ public void movecanvas(MouseEvent e) { Canvas mcan = (Canvas) e.getSource(); int mtop = mcan.getY(), mleft = mcan.getX(), mwidth = mcan .getWidth(), mheight = mcan.getHeight(); mcan.setBounds(mleft + e.getX() - clickX, mtop + e.getY() - clickY, mwidth, mheight); for (int i = 0; i < v.size(); i++) { Vector v1 = (Vector) v.elementAt(i); if (((Canvas[]) v1.elementAt(0))[0].equals(mcan)) { ((int[]) v1.elementAt(1))[0] = mcan.getX(); ((int[]) v1.elementAt(1))[1] = mcan.getY(); ((int[]) v1.elementAt(1))[2] = mcan.getWidth(); ((int[]) v1.elementAt(1))[3] = mcan.getHeight(); } else if (((Canvas[]) v1.elementAt(0))[1].equals(mcan)) { ((int[]) v1.elementAt(1))[4] = mcan.getX(); ((int[]) v1.elementAt(1))[5] = mcan.getY(); ((int[]) v1.elementAt(1))[6] = mcan.getWidth(); ((int[]) v1.elementAt(1))[7] = mcan.getHeight(); } } ((applet7) this.getParent()).repaint(); } /** * 删除图标以及相关连的线段 */ public void removecanvas(KeyEvent e) { try { Canvas mcan = (Canvas) e.getSource(); ((applet7) this.getParent()).remove(curdelcan); for (int i = v.size() - 1; i >= 0; i--) { Vector v1 = (Vector) v.elementAt(i); if (((Canvas[]) v1.elementAt(0))[0].equals(mcan) || ((Canvas[]) v1.elementAt(0))[1].equals(mcan)) v.removeElementAt(i); } ((applet7) this.getParent()).validate(); ((applet7) this.getParent()).repaint(); } catch (NullPointerException ex) { return; } } /** * 鼠标拖动图标是改变对象位置以及对象相关连线 */ public void clickcanvas(MouseEvent e) { curdelcan = (Canvas) e.getSource(); clickX = e.getX(); clickY = e.getY(); ((applet7) this.getParent()).repaint(); if (((applet7) this.getParent()).drawclear.equals("")) return; if (((applet7) this.getParent()).startObj == null && ((applet7) this.getParent()).endObj == null) ((applet7) this.getParent()).startObj = (Canvas) e.getSource(); else if (((applet7) this.getParent()).startObj != null && ((applet7) this.getParent()).endObj == null && ((applet7) this.getParent()).startObj != (Canvas) e .getSource()) { ((applet7) this.getParent()).endObj = (Canvas) e.getSource(); Vector v1 = new Vector(); v1.addElement(new Canvas[] { startObj, endObj }); v1.addElement(new int[] { startObj.getX(), startObj.getY(), startObj.getWidth(), startObj.getHeight(), endObj.getX (), endObj.getY(), endObj.getWidth(), endObj.getHeight() }); v.addElement(v1); ((applet7) this.getParent()).drawclear = ""; ((applet7) this.getParent()).drawLine.setBackground(null); ((applet7) this.getParent()).startObj = null; ((applet7) this.getParent()).endObj = null; } } /** * 画出动态图标 */ public void paint(Graphics g) { g.drawImage(im, 0, 0, this); } } // ***********************工具栏图标***************************** class myCanvas extends Canvas { private static final long serialVersionUID = 1L; Image im = null; String str = ""; /** * 文字构造器 */ public myCanvas(String s) { super(); this.str = s; } /** * 图象构造器 */ public myCanvas(Image im) { super(); this.setCursor(new Cursor(Cursor.HAND_CURSOR)); //设置鼠标悬浮时的样式,这里为手型 this.im = im; this.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { clickmyCanvas(e); } }); } /** * 每一个图标单击事件 */ public void clickmyCanvas(MouseEvent e) { ((applet7) this.getParent().getParent()).drawLine.setBackground(null); //恢复线形图标的默认背景 ((applet7) this.getParent().getParent()).drawclear = ""; //让线形图标初始化 ((applet7) this.getParent().getParent()).startObj = null; //初始化绘制线段的开始对象 ((applet7) this.getParent().getParent()).endObj = null; //初始化绘制线段的结束对象 curcan = (Canvas) e.getSource(); //获取当前图标对象 curimg = (Image) im; //获取当前图标对象的图象 } public void paint(Graphics g) { if (str.equals("")) { g.drawImage(im, 0, 0, this); //画图,工具图标 } else { g.drawString(str, 20, getHeight() / 2); //文字,线型图标"drawline" } } } }
发表评论
-
Applet画图修改中。。。
2010-01-13 21:00 2344效果如下图: import java.applet.A ... -
Applet画图程序
2010-01-11 14:18 1763双击右键才显示功能菜单。。。 import java ... -
Applet打印
2009-11-23 15:56 2081效果如上图: import java.awt.*; i ... -
applet数字签名实践篇三(转载)
2009-11-17 18:56 2068最近在研究applet,打算使用applet来开发一个上传文件 ... -
applet数字签名实践篇二(转载)
2009-11-17 18:45 1366【摘 要】如果你要考虑在Internet上实现这个Applet ... -
applet数字签名实践篇一(转载)
2009-11-17 18:44 1563本人在报表开发之时, ... -
Applet与Servlet通信
2009-11-13 17:42 1194在今天的多层结构的web应用程序的设计中,我们可以同时使用Ja ... -
使用 Java applet 访问远程 Web 服务
2009-11-13 10:35 1911通过浏览器提交、接收和分析 XML Web 服务消息 ... -
利用Applet进行Web打印
2009-11-07 17:45 1960一web打印常见方法: 1,一种简单的方法是在html上调用w ... -
applet应用小技巧
2009-11-06 13:29 10551。获取屏幕分辩率的宽和高: int width=To ... -
applet图像的处理
2009-11-03 16:08 2080设置呈现(RenderingHints)提示 8.2 ... -
applet绘制纹理图
2009-11-03 16:04 1171其效果如下图: import java.applet.*; ... -
applet中保存canvas中的图片
2009-11-02 15:36 1631效果图如下: import java.awt.*; ... -
applet画图板程序(画直线、画圆、画笔、画矩形、调色板)
2009-10-27 17:08 5084import java.applet.*; import j ... -
applet画图板程序
2009-10-27 17:00 2056import java.applet.Applet; imp ... -
applet图形缩放类
2009-10-24 20:11 1325import java.awt.Image; import ... -
applet文字和图标的合成
2009-10-24 17:43 1625相信大家平时碰到过一些在JAVA中对图像进行处理的需求,比如需 ... -
运行applet时出现无法载入class的问题,以及设置codeBase
2009-08-13 17:57 2394最简单的方法就是:把它们放在同一个目录就不用设置啦。。。,但是 ... -
IE中Applet不能运行的问题
2009-08-13 17:49 2169applet程序正常没问题,在Html页面中的设置也没问题,只 ... -
Applet 双缓冲技术
2009-07-23 17:32 1564import java.applet.Applet; imp ...
相关推荐
以上就是关于"java applet 挖宝小程序"的主要知识点,它展示了Java Applet开发的基本流程和关键技术。虽然Java Applet现在已经不再主流,但学习其中的编程思想和技术原理,对于理解现代Java GUI编程和游戏开发仍有...
3. **paint(Graphics g)**:绘制Applet的内容,接收一个Graphics对象用于绘图。 4. **destroy()**:Applet即将被移除时调用,释放资源。 5. **stop()**:Applet暂停运行,例如当浏览器窗口失去焦点时。 **四、...
JavaApplet 的工作流程包括以下几个步骤: 1. 创建一个继承自 `java.applet.Applet` 的公共子类,子类名应与源程序文件名相同。 2. 编译该源代码文件生成 `.class` 文件。 3. 在 HTML 文件中添加 `<applet>` 标签,...
Applet是Java的一种小程序,它可以在Web浏览器中运行,为网页提供交互性和动态内容。 1. **Java Applet**: Java Applet是早期Java技术的一部分,它允许开发者创建嵌入到HTML页面中的小型Java程序。用户在访问网页时...
总的来说,这个“图片浏览小程序(java+applet)”项目是一个综合性的Java编程实践,涵盖了Java语言基础、Applet技术、图像处理以及基本的软件开发流程。通过学习和理解这个项目,开发者可以深入理解Java应用程序的...
- **绘制流程图**:首先,设计程序的逻辑流程图,明确每个阶段的功能和操作顺序。 - **编写代码**:根据流程图,用Java语言实现Applet的各个组件和方法。这包括初始化(`init()`)、开始(`start()`)以及运行(`...
JGraphx是一款开源的Java图形组件,具有高交互性和自动化,可以应用于表示图的结构中,如流程图、UML、交通线路、网络等等。在本文中,我们将使用JGraphx实现网络拓扑图的自动绘制。 在设计和实现中,我们首先使用...
- 程序流程图可以帮助可视化代码的执行步骤,主要代码应有注释以便理解。界面设计包括曲线、小人和颜色按钮的布局。 - 运行调试阶段,要确保程序无误,曲线绘制正确,小人能按预期路径运动,同时收集运行截图和...
Applet是Java的一种小程序,它可以在Web浏览器中运行,为用户提供互动体验。本游戏包含了12个不同的关卡,每个关卡都需要玩家通过策略性的操作,将所有箱子移动到预设的目标位置,以完成关卡挑战。 游戏的核心机制...
通过分析这些文件,我们可以理解整个骑士巡游的Java Applet实现流程,从加载资源、初始化棋盘、设置初始骑士位置,到运行算法寻找巡游路径并动态更新界面显示。这个项目不仅锻炼了编程技能,还展示了如何将理论知识...
【北大Java--Applet】是北京大学Java课程的一部分,主要讲解如何使用Java语言编写在浏览器环境中运行的小应用程序,即Applet。Applet与普通的Java应用程序(Application)的主要区别在于执行方式。Application通过...
`jGraph`的强大之处在于它的灵活性和易用性,开发者可以通过简单的代码就能实现复杂的图形绘制,同时支持各种图形操作,如拖放、缩放、旋转等。此外,`jGraph`还支持XML格式的数据交换,使得图形数据的存储和读取...
### JavaApplet教程详解 #### 引言 JavaApplet是一种使用Java编程语言创建的小型应用...通过本文的介绍,初学者应能够掌握JavaApplet的基本概念、环境搭建、代码编写与运行流程,为进一步探索Java编程打下坚实基础。
Java Applet的执行流程包括以下步骤: 1. 浏览器加载HTML页面,遇到`<applet>`标签时,请求服务器下载Applet的.class文件。 2. 浏览器中的Java插件解析.class文件并创建Applet的实例。 3. JVM加载Applet类,并调用...
5. **Applet示例**:简单的Applet程序通常覆盖`paint()`方法,通过`Graphics`对象来绘制文本、线条、矩形、椭圆等。例如,`SimpleApplet`展示了如何在applet窗口中显示文字,而`DrawingApplet`则演示了如何绘制图形...
例如,一个简单的"Hello World" Applet可以这样实现: ```java import java.awt.Graphics; import java.applet.Applet; public class HelloWorld extends Applet { String hw_text; public void init() { hw_...
Java applet是Java技术在早期Web...理解Java applet的工作原理和开发流程对于学习Java历史和技术演进具有重要意义。如今,开发者可以转向更现代的技术栈,如JavaScript和HTML5,以构建更加高效、安全的Web应用程序。
Java Applet是Java编程语言中的一种小程序,它可以在Web浏览器中运行,为用户提供交互式的体验。在本章中,我们将深入探讨Java Applet的基础知识,包括它的特点、运行原理、创建与执行流程,以及如何在网页中传递...
1 引言 1 1.1 课题背景 1 1.2 技术可行性研究 1 1.2.1 Java Applet技术的可行性研究 1 1.2.2 XML技术的可行性研究 1 1.2.3 Microsoft Office Access...4.2.3 流程图保存和读取方法设计 17 4.2.4 节点间关系保存的实现 2