/*用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以及如何利用它创建一个简易画图程序。 1. Java Applet概述: Java Applet是Java语言编写的小程序,可以嵌入到HTML网页中,由浏览器的Java虚拟机(JVM)执行。在Web的早期,Java Applet被...
Java Applet小游戏拼图是一个基于Java编程语言的互动娱乐应用,它被设计成可以在Web浏览器中运行的小程序。Applet是Java技术的一部分,允许开发者创建动态、交互式的网络内容。这个小游戏是为Java爱好者提供的一个...
3. **paint(Graphics g)**:绘制Applet的内容,接收一个Graphics对象用于绘图。 4. **destroy()**:Applet即将被移除时调用,释放资源。 5. **stop()**:Applet暂停运行,例如当浏览器窗口失去焦点时。 **四、...
总的来说,"JavaApplet仿微信打飞机"游戏展示了Java编程在游戏开发中的应用,尤其是对于初学者,这是一个很好的实践项目,可以学习到Java图形编程、事件处理、多线程和资源管理等多方面的知识。尽管JavaApplet已不再...
一个Applet通常继承自`java.applet.Applet`类,这个类提供了运行Applet所需的基本功能。以下是一个简单的Applet示例: ```java import java.applet.*; import java.awt.*; public class ShowImageApplet extends ...
在这个特定的案例中,我们讨论的是一个名为"可设置大小的鼠标点击画圆和正方形的Applet程序"。这个程序允许用户通过鼠标点击在屏幕上绘制圆和正方形,并且能够调整这些图形的大小,改变它们的颜色,以及在画布上自由...
首先,小应用程序是Java程序的一个子类,通常是`java.applet.Applet`或`javax.swing.JApplet`的实例。它们通过HTML的`<applet>`标记在浏览器中运行,或者使用`appletviewer`工具独立执行。在类的层次结构中,`Applet...
本示例中的"利用JAVA applet绘制的时钟"是一个基于Java Applet实现的模拟时钟,它能够实时显示当前时间,就像实际的物理时钟一样。 1. **Java Applet基础知识**: - Java Applet是一种特殊的Java程序,它嵌入到...
【标题】:“图片浏览小程序(java+applet)”指的是一个基于Java编程语言开发的小应用程序,用于查看和浏览图像。Applet是Java的一种特殊类型的应用程序,它可以在Web浏览器中运行,为用户提供互动体验。 【描述】:...
首先,要创建一个Applet,我们需要继承Java的`Applet`类或`JApplet`类(如果是Java Swing的一部分)。`Applet`类是Java AWT(Abstract Window Toolkit)库中的基础类,而`JApplet`则是Swing库中的一个组件,提供了更...
Java Applet有四个主要状态:初始化(init)、加载(load)、运行(start)和停止(stop)。当用户首次访问包含Applet的网页时,浏览器会加载并初始化Applet,接着调用`start()`方法使其开始运行。当浏览器窗口失去...
然而,随着Web技术的发展,Applet的使用已经逐渐减少,但对于我们学习和理解Java在网络环境下的运行机制,Applet仍然是一个很好的实例。 在俄罗斯方块的开发中,我们首先需要定义游戏的基本元素:方块、游戏板、...
【标题】"Applet-C-11.rar_关闭程序"是一个关于C语言编程的压缩包,其中包含了11个不同的小程序。这些小程序涵盖了多种主题,包括操作系统交互、数据排序、图形设计以及游戏开发等。 【描述】提到的"11个C语言小...
这个Applet的独特之处在于,它允许网站的访问者能够在一个共享的画板上进行绘画,并且这些绘图操作会实时同步到其他连接到同一画板的用户那里,从而促进了远程团队之间的协作和创意交流。 首先,让我们深入了解一下...
这个简单的Java画图板程序展示了如何结合GUI组件、事件处理和文件操作来创建一个交互式的绘图工具。虽然这个例子基于Applet,但在现代Java开发中,可以使用Swing或JavaFX来实现类似的功能,同时提供更好的跨平台兼容...
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 系统模块功能和设计思想 ...
一个简单的APPLET通常包含`init()`, `paint()`, `start()`, `stop()`等方法。`init()`用于初始化APPLET,`paint()`用于绘制图形,而`start()`和`stop()`则控制APPLET的生命周期。在`paint()`方法中,我们将使用...
这个软件不但完全实现老师所要求的功能,而且加多很多其他功能,使得软件更加完善,绝对是不可多得的一个软件。好东西大家一起分享! 这是老师的原本要求: 1:2D绘图程序:实现点,直线,矩形,圆形,三角形等...
2. **Scribble.java**:可能是一个基础的绘图Applet,让用户能够在网页上画图。可能包含了图形绘制、颜色选择、撤销重做等功能,展示了Java Applet的基础用法。 3. **ScribbleCutAndPaste.java**:此文件可能扩展了...