`
rainytimes
  • 浏览: 7372 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Applet的一个绘图板

    博客分类:
  • J2SE
阅读更多
/*用Applet做的一个会图板但是不知道为什么在画圆和方的时候,原来画好的图形会改变位置

如果谁能帮我一下 十分感激!

希望高手能在这留言赐教!

*/

 

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
public class TestOne extends Applet {
 
 String str="我爱你中国,我的家在北京!";
 int x1,y1,x2,y2,currentshape=ShapeParam.line;
 Color c=Color.black;
 CheckboxGroup cbg = new CheckboxGroup();
 CheckboxGroup shapecbg=new CheckboxGroup();
    ArrayList<ShapeParam> shapeparams=new ArrayList<ShapeParam>();
 
 @Override
 public void destroy() {
  System.out.println("destroy");
 }

 @Override
 public void init() {
  Button btn1=new Button("清屏");
  Label lab1=new Label("ControlGroup");
  btn1.setBackground(Color.LIGHT_GRAY);
  
  Panel pcolor=new Panel();
  Panel pshape=new Panel();
  
  
  pcolor.setLayout(new GridLayout(2, 3));
   
   Checkbox cb1=new Checkbox("Black", cbg, true);
   Checkbox cb2=new Checkbox("Red", cbg, false);
   Checkbox cb3=new Checkbox("Blue", cbg, false);
   
   
   Checkbox shapecb1=new Checkbox("线",shapecbg,true);
   Checkbox shapecb2=new Checkbox("圆",shapecbg,false);
   Checkbox shapecb3=new Checkbox("方",shapecbg,false);
   
   
   
   
   pcolor.add(cb1);
   pcolor.add(cb2);
   pcolor.add(cb3);
   
  pcolor.add(lab1);
  
  
   

  pcolor.add(shapecb1);
  pcolor.add(shapecb2);
   pcolor.add(shapecb3);
   
   pcolor.add(btn1);
   
   

 

  
   pcolor.setBackground(Color.LIGHT_GRAY);
   pshape.setBackground(Color.LIGHT_GRAY);
  
 
  
  
   this.add(pcolor,BorderLayout.CENTER);
  
   
  
  btn1.addActionListener(new Btn1Action());
  
  
  
  this.addMouseListener(new MouseAdapter(){

  

  @Override
  public void mousePressed(MouseEvent e) {
   x1=e.getX();
   y1=e.getY();
   
   
  }
  

 

   @Override
   public void mouseReleased(MouseEvent e) {
    shapeparams.add(new ShapeParam(x1,y1,x2,y2,c,currentshape));
    

    

   }
   
   
   
  });

  this.setSize(400,400);
  
  
  
  
  this.addMouseMotionListener(new MousePain(){
   
   
  });
  
  
  
  
 }

 @Override
 public void start() {
  
 }

 @Override
 public void stop() {
  
 }

 @Override
 public void paint(Graphics g) {
  
     int xx=x1;
     int yy=y1;
     if(x1>x2)xx=x2;
     if(y1>y2)yy=y2;
  drawshape();
  g.setColor(c);
  changecolor(g);
  changeshape();
  
  
  
  if(x1==0 &&x2==0 && y1==0 && y2==0 )return;
  
  if(currentshape==ShapeParam.line)
  {
  
  g.drawLine(x1, y1, x2, y2);
  }
  if(currentshape==ShapeParam.rec)
  {
  
  g.draw3DRect(xx, yy, Math.abs(x1-x2), Math.abs(y1-y2), true);
  }
  if(currentshape==ShapeParam.oval)
  {
  
   g.drawOval(xx, yy, Math.abs(x1-x2), Math.abs(y1-y2));
  }
  
  
  
 }
 
 private void changeshape() {
  if(shapecbg.getSelectedCheckbox().getLabel()=="线")currentshape=ShapeParam.line;
  if(shapecbg.getSelectedCheckbox().getLabel()=="方")currentshape=ShapeParam.rec;
  if(shapecbg.getSelectedCheckbox().getLabel()=="圆")currentshape=ShapeParam.oval;
   
 }

 private void changecolor(Graphics g) {
  if(cbg.getSelectedCheckbox().getLabel()=="Blue")
      {g.setColor(c=Color.blue);return;}
  if(cbg.getSelectedCheckbox().getLabel()=="Red")
      {g.setColor(c=Color.red);return;}
  if(cbg.getSelectedCheckbox().getLabel()=="Black")
      {g.setColor(c=Color.black);return;}
  
 }

 private void drawshape() {
  
      int dx;
      int dy;
      Graphics g=this.getGraphics();
      
      
  for(int i=0;i<shapeparams.size();i++){
   
   
   ShapeParam sp=shapeparams.get(i);
   
   //System.out.println(sp.toString());
   dx=sp.x1;
   dy=sp.x2;
   if(sp.x1>sp.x2)dx=sp.x2;
      if(sp.y1>sp.y2)dy=sp.y2;
   
   if(sp.shape==ShapeParam.line)
   {g.setColor(sp.c);
   
   g.drawLine(sp.x1, sp.y1, sp.x2, sp.y2);
   System.out.println("l");
   }
   if(sp.shape==ShapeParam.rec)
   {g.setColor(sp.c);
   
   g.draw3DRect(dx, dy, Math.abs(sp.x1-sp.x2), Math.abs(sp.y1-sp.y2), true);
   System.out.println("r");
   }
   if(sp.shape==ShapeParam.oval)
   {g.setColor(sp.c);
   
   g.drawOval(dx, dy, Math.abs(sp.x1-sp.x2), Math.abs(sp.y1-sp.y2));
   System.out.println("o");
   }
   
   
   
   
  }
  
 }

 class Btn1Action implements ActionListener{

  public void actionPerformed(ActionEvent arg0) {
   
   x1=x2=y1=y2=0;
   
   shapeparams.removeAll(shapeparams);
   
   TestOne.this.repaint();
   
  }
   
 }
 class MousePain implements MouseMotionListener {

  public void mouseDragged(MouseEvent e) {
   
   TestOne.this.x2=e.getX();
   TestOne.this.y2=e.getY();
   
  
   
   TestOne.this.repaint();
   
   
  }

  public void mouseMoved(MouseEvent e) {
   
   
  }
  
  
  
 } 
 
 class ShapeParam{
  static final int line=0;
  static final int rec=1;
  static final int oval=2;
  
  int x1=0;
  int y1=0;
  int x2=0;
  int y2=0;
  int shape;
  
  
  Color c;
  public ShapeParam(int x1,int y1,int x2,int y2,Color c,int shape){
   this.x1=x1;
   this.y1=y1;
   this.x2=x2;
   this.y2=y2;
   this.c=c;
   this.shape=shape;
  }
  
  public String toString(){
   return String.valueOf(x1)+"  "+x2+"  "+y1+"  "+y2+"  "+shape;
  }
 }
 
}

//<applet code="TestOne.class" width=400 height=400>

//</applet>




分享到:
评论

相关推荐

    基于java applet的简易画图程序

    下面将详细介绍Java Applet以及如何利用它创建一个简易画图程序。 1. Java Applet概述: Java Applet是Java语言编写的小程序,可以嵌入到HTML网页中,由浏览器的Java虚拟机(JVM)执行。在Web的早期,Java Applet被...

    java applet小游戏拼图

    Java Applet小游戏拼图是一个基于Java编程语言的互动娱乐应用,它被设计成可以在Web浏览器中运行的小程序。Applet是Java技术的一部分,允许开发者创建动态、交互式的网络内容。这个小游戏是为Java爱好者提供的一个...

    javaapplet

    3. **paint(Graphics g)**:绘制Applet的内容,接收一个Graphics对象用于绘图。 4. **destroy()**:Applet即将被移除时调用,释放资源。 5. **stop()**:Applet暂停运行,例如当浏览器窗口失去焦点时。 **四、...

    JavaApplet仿微信打飞机

    总的来说,"JavaApplet仿微信打飞机"游戏展示了Java编程在游戏开发中的应用,尤其是对于初学者,这是一个很好的实践项目,可以学习到Java图形编程、事件处理、多线程和资源管理等多方面的知识。尽管JavaApplet已不再...

    java小程序Applet显示图片

    一个Applet通常继承自`java.applet.Applet`类,这个类提供了运行Applet所需的基本功能。以下是一个简单的Applet示例: ```java import java.applet.*; import java.awt.*; public class ShowImageApplet extends ...

    可设置大小的鼠标点击画圆和正方形的Applet程序

    在这个特定的案例中,我们讨论的是一个名为"可设置大小的鼠标点击画圆和正方形的Applet程序"。这个程序允许用户通过鼠标点击在屏幕上绘制圆和正方形,并且能够调整这些图形的大小,改变它们的颜色,以及在画布上自由...

    Java程序设计:第九章 小应用程序(Applet).ppt

    首先,小应用程序是Java程序的一个子类,通常是`java.applet.Applet`或`javax.swing.JApplet`的实例。它们通过HTML的`&lt;applet&gt;`标记在浏览器中运行,或者使用`appletviewer`工具独立执行。在类的层次结构中,`Applet...

    利用JAVA applet绘制的时钟

    本示例中的"利用JAVA applet绘制的时钟"是一个基于Java Applet实现的模拟时钟,它能够实时显示当前时间,就像实际的物理时钟一样。 1. **Java Applet基础知识**: - Java Applet是一种特殊的Java程序,它嵌入到...

    图片浏览小程序(java+applet)

    【标题】:“图片浏览小程序(java+applet)”指的是一个基于Java编程语言开发的小应用程序,用于查看和浏览图像。Applet是Java的一种特殊类型的应用程序,它可以在Web浏览器中运行,为用户提供互动体验。 【描述】:...

    编写Applet程序实现手机图形界面

    首先,要创建一个Applet,我们需要继承Java的`Applet`类或`JApplet`类(如果是Java Swing的一部分)。`Applet`类是Java AWT(Abstract Window Toolkit)库中的基础类,而`JApplet`则是Swing库中的一个组件,提供了更...

    JAVA Applet编程

    Java Applet有四个主要状态:初始化(init)、加载(load)、运行(start)和停止(stop)。当用户首次访问包含Applet的网页时,浏览器会加载并初始化Applet,接着调用`start()`方法使其开始运行。当浏览器窗口失去...

    俄罗斯方块(java+applet)130228.rar

    然而,随着Web技术的发展,Applet的使用已经逐渐减少,但对于我们学习和理解Java在网络环境下的运行机制,Applet仍然是一个很好的实例。 在俄罗斯方块的开发中,我们首先需要定义游戏的基本元素:方块、游戏板、...

    Applet-C-11.rar_关闭程序

    【标题】"Applet-C-11.rar_关闭程序"是一个关于C语言编程的压缩包,其中包含了11个不同的小程序。这些小程序涵盖了多种主题,包括操作系统交互、数据排序、图形设计以及游戏开发等。 【描述】提到的"11个C语言小...

    Whiteboard Applet-开源

    这个Applet的独特之处在于,它允许网站的访问者能够在一个共享的画板上进行绘画,并且这些绘图操作会实时同步到其他连接到同一画板的用户那里,从而促进了远程团队之间的协作和创意交流。 首先,让我们深入了解一下...

    JAVA实现简单的画图板

    这个简单的Java画图板程序展示了如何结合GUI组件、事件处理和文件操作来创建一个交互式的绘图工具。虽然这个例子基于Applet,但在现代Java开发中,可以使用Swing或JavaFX来实现类似的功能,同时提供更好的跨平台兼容...

    毕设项目:基于BS结构下的OA流程可视化的研究与实现(Java+源代码+文档).zip

    2.2 java applet和applet绘图技术的介绍 3 2.2.1 applet的介绍 3 2.2.2 Applet的AWT绘制 4 2.3系统环境与平台基础 5 3 系统需求分析与总体设计 5 3.1系统需求分析 5 3.2 系统功能介绍 5 3.3 系统模块功能和设计思想 ...

    Java简单画图实例_画一个诺基亚手机

    一个简单的APPLET通常包含`init()`, `paint()`, `start()`, `stop()`等方法。`init()`用于初始化APPLET,`paint()`用于绘制图形,而`start()`和`stop()`则控制APPLET的生命周期。在`paint()`方法中,我们将使用...

    JAVA 课程设计--绘图软件

    这个软件不但完全实现老师所要求的功能,而且加多很多其他功能,使得软件更加完善,绝对是不可多得的一个软件。好东西大家一起分享! 这是老师的原本要求: 1:2D绘图程序:实现点,直线,矩形,圆形,三角形等...

    datatransfer.rar_Applet_Java_

    2. **Scribble.java**:可能是一个基础的绘图Applet,让用户能够在网页上画图。可能包含了图形绘制、颜色选择、撤销重做等功能,展示了Java Applet的基础用法。 3. **ScribbleCutAndPaste.java**:此文件可能扩展了...

Global site tag (gtag.js) - Google Analytics