比如画直线、椭圆、矩形等的,
而且可以改变直线的长度,椭圆和矩形的大小,
还可以移动他们的位置的谢谢
而且可以改变直线的长度,椭圆和矩形的大小,
还可以移动他们的位置的谢谢
解决方案 »
- 自学编程从零基础 打算学JAVA方向,一直到安卓开发需要看那些书和视频?求高手指点几句
- ? - URLConnection.getExpiration()是什么意思
- java如何判断apache的日志文件正在被使用?50分
- 熟悉socket和tomcat的请进!
- 一个参数传递问题~~`
- 高分!求解 事件监听处理!!!
- 我的点击事件为什么没响应??
- 小弟是初学者,请推荐几本不错的java书籍。
- 请问各位大虾policy文件及property文件如何生成?
- HashMap.containsKey(vi)怎么会为false?(详见内)
- 上传图片到server,是传到database中,还是传到server的磁盘文件?
- apppet 问题求助
楼主如果得到,给我也发一下吧,谢谢了。
[email protected]
好,如果找到了发给你
我现在自己在做。
import java.awt.event.*;
import java.awt.geom.*;
import java.applet.*;
import java.util.*;public class SharpApplet extends Applet implements ItemListener {
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 1L;
private Choice comboBox;
private ShapeCanvas canvas;
public void init(){
setLayout( new BorderLayout());
canvas = new ShapeCanvas();
add(canvas,"Center");
comboBox = new Choice();
comboBox.addItem("Line");
comboBox.addItem("Rectangle");
comboBox.addItem("RoundRectangle");
comboBox.addItem("Ellipse");
comboBox.addItem("Polygon");
comboBox.addItem("QuadCurve");
comboBox.addItem("CubicCurve");
comboBox.addItemListener(this);
add(comboBox,"North");
} public void itemStateChanged(ItemEvent e) {
ShapeMaker sharpMaker;
String s = comboBox.getSelectedItem();
if(s=="line")
sharpMaker = (ShapeMaker)(new LineMaker());
else if(s=="Rectangle")
sharpMaker = (ShapeMaker)(new RectangleMaker());
else if(s=="RoundRectangle")
sharpMaker = (ShapeMaker)(new RoundRectangleMaker());
else if(s=="Ellipse")
sharpMaker = (ShapeMaker)(new EllipseMaker());
else if(s=="Polygon")
sharpMaker = (ShapeMaker)(new PolygonMaker());
else if(s=="QuadCurve")
sharpMaker = (ShapeMaker)(new QuadCurveMaker());
else
sharpMaker = (ShapeMaker)(new CubicCurveMaker());
canvas.setSharpMaker(sharpMaker);
}}class ShapeCanvas extends Canvas{
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 1L;
private Point2D[] points;
private static Random generator = new Random();
private static int SIZE = 10;
private int current;
private ShapeMaker shapeMaker;
public ShapeCanvas(){
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
current=-1;
}
public void setSharpMaker(ShapeMaker aShapeMaker){
shapeMaker = aShapeMaker;
int n = shapeMaker.getPointCount();
points = new Point2D[n];
for(int i=0;i<n;i++){
double x = generator.nextDouble()*getWidth();
double y = generator.nextDouble()*getHeight();
points[i] = new Point2D.Double(x,y);
}
repaint();
}
public void paint(Graphics g){
if(points == null) return;
Graphics2D g2 = (Graphics2D)g;
for(int i = 0;i<points.length;i++){
double x = points[i].getX() - SIZE/2;
double y = points[i].getY() - SIZE/2;
g2.fill(new Rectangle2D.Double(x,y,SIZE,SIZE));
}
g2.draw(shapeMaker.makeShape(points));
}
public class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent e){
Point p=e.getPoint();
for(int i = 0;i<points.length;i++){
double x = points[i].getX() - SIZE/2;
double y = points[i].getY() - SIZE/2;
Rectangle2D r = new Rectangle2D.Double(x,y,SIZE,SIZE);
if(r.contains(p)){
current = 1;
return;
}
}
}
public void mouseRelease(MouseEvent e){
current = -1;
}
}
public class MouseMotionHandler extends MouseMotionAdapter{
public void mouseDragged(MouseEvent e){
if(current == -1) return;
points[current] = e.getPoint();
repaint();
}
}
}abstract class ShapeMaker{
private int pointCount;
public ShapeMaker(int apointCount){
pointCount = apointCount;
}
public int getPointCount(){
return pointCount;
}
public abstract Shape makeShape(Point2D[] p);
}class LineMaker extends ShapeMaker{
public LineMaker(){
super(2);
}
public Shape makeShape(Point2D[] p){
return new Line2D.Double(p[0],p[1]);
}
}class RectangleMaker extends ShapeMaker{
public RectangleMaker(){
super(2);
}
public Shape makeShape(Point2D[] p){
Rectangle2D s = new Rectangle2D.Double();
s.setFrameFromDiagonal(p[0],p[1]);
return s;
}
}class RoundRectangleMaker extends ShapeMaker{
public RoundRectangleMaker(){
super(2);
}
public Shape makeShape(Point2D[] p){
RoundRectangle2D s = new RoundRectangle2D.Double(0,0,0,0,20,20);
s.setFrameFromDiagonal(p[0],p[1]);
return s;
}
}class EllipseMaker extends ShapeMaker{
public EllipseMaker(){
super(2);
}
public Shape makeShape(Point2D[] p){
Ellipse2D s = new Ellipse2D.Double();
s.setFrameFromDiagonal(p[0],p[1]);
return s;
}
}/*class ArcMaker extends ShapeMaker{
public ArcMaker(){
super(4);
}
Shape makeShape(Point2D[] p){
double centerX = (p[0].getX() + p[1].getX())/2;
double centerY = (p[0].getY() + p[1].getY())/2;
double width = Math.abs(p[1].getX()-p[0].getX());
double height = Math.abs(p[1].getY()-p[1].getY());
double distortedStartAngle = Math.toDegrees(Math.atan2(-(p[2].getY()-centerY)*width,(p[2].getX()-centerX)*height));
double distortedEndAngle = Math.toDegrees(Math.atan2(-(p[3].getY()-centerY)*width,(p[3].getX()-centerX)*height));
double dis
}
}*/class PolygonMaker extends ShapeMaker{
public PolygonMaker(){
super(6);
}
public Shape makeShape(Point2D[] p){
GeneralPath s = new GeneralPath();
s.moveTo((float)p[0].getX(),(float)p[0].getY());
for(int i=1;i<p.length;i++){
s.lineTo((float)p[i].getX(),(float)p[i].getY());
}
s.closePath();
return s;
}
}class QuadCurveMaker extends ShapeMaker{
public QuadCurveMaker(){
super(3);
}
public Shape makeShape(Point2D[] p){
return new QuadCurve2D.Double(p[0].getX(),p[0].getY(),p[1].getX(),p[1].getY(),p[2].getX(),p[2].getY());
}}class CubicCurveMaker extends ShapeMaker{
public CubicCurveMaker(){
super(4);
}
public Shape makeShape(Point2D[] p){
return new CubicCurve2D.Double(p[0].getX(),p[0].getY(),p[1].getX(),p[1].getY(),p[2].getX(),p[2].getY(),p[3].getX(),p[3].getY());
}
}以前照书上敲的个例子,呵