我直接贴代码
//package graphics
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.Timer; ///java.util.Timer shi xianshi daoru/**
*pinghua donghua de Swing zujian
*/
public class Hypnosis extends JComponent implements ActionListener
{
double x,y; //luoxuanxian zhongxin
double r1,r2; //luoxuanxian neiwai jing
double a1,a2; //luoxuanxian qishi jiao
double deltaA; //meizhen bianhua jiaodu
double deltaX,deltaY; //zhongxin guidao
float linewidth; //xianchu
Timer timer; //jifa donghua duixiang
BufferedImage buffere; //shuang huanchong tuxiang
Graphics2D osg; //huanchong Graphics2D tuxiang public Hypnosis(double x,double y,double r1,double r2,double a1,double a2,
float linewidth,int delay,double deltaA,double deltaX,double deltaY)
{
this.x=x;this.y=y;
this.r1=r1;this.r2=r2;
this.a1=a1;this.a2=a2;
this.linewidth=linewidth;
this.deltaA=deltaA;
this.deltaX=deltaX;
this.deltaY=deltaY;
//chuangjian yige dishiqi yanshi haomiao diaoyong yici actinperformed()
timer=new Timer(delay,this); //chuangjian shuang huanchong de huanchongqu
buffere=new BufferedImage((int)(2*r2+linewidth),(int)(2*r2+linewidth),BufferedImage.TYPE_INT_RGB);
////chuangjian Graphics duixiang yongyu huanchong,shezhi xianchu
////bing qingqiu baozhen
osg=buffere.createGraphics();
osg.setStroke(new BasicStroke(linewidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
osg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
} ////qidong dingshiqi yi qiting huamian
public void start(){timer.start();}
public void stop(){timer.stop();}
/**
*Swing diaoyong ci fangfa chonghua zujian
*chi fangfa yong shuang huanchong shi donghua pinghua
*Swing zidong shuang huanchong shijishang
*chabie buda dan duiyu lijie jiqiao hen zhongyao
*/ public void paintComponent(Graphics g){
////qingchu pingwai tuxiang beijing
osg.setColor(getBackground());
osg.fillRect(0,0,buffere.getWidth(),buffere.getHeight()); /////zai pingwei tuxiang zhong hua heise luoxuanxian
osg.setColor(Color.black);
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
//////jiang pingwai fuxiang fuzhi [ingmu
g.drawImage(buffere,(int)(x-r1),(int)(y-r2),this);
} /** */
public void actionPerformed(ActionEvent e){
repaint((int)(x-r2-linewidth),(int)(y-r2-linewidth),(int)(2*(r2+linewidth)),(int)(2*(r2+linewidth)));
Rectangle bounds=getBounds();
if((x-r2+deltaX<0)||(x+r2+deltaX>bounds.width))
deltaX=-deltaX;
if((y-r2+deltaY<0)||(y+r2+deltaY>bounds.width))
deltaY=-deltaY;
///YIDONG ZHONGXIN
x+=deltaX;
y+=deltaY; ////zengjia qizhijiao
a1+=deltaA;
a2+=deltaA;
if (a1>2*Math.PI)
{
a1-=2*Math.PI;
a2-=2*Math.PI;
}
repaint((int)(x-r2-linewidth),(int)(y-r2-linewidth),(int)(2*(r2+linewidth)),(int)(2*(r2+linewidth)));
}
public boolean isDoubleBuffered() {return false;} public static void main(String[] args) {
JFrame f=new JFrame("Hypnosis");
Hypnosis h= new Hypnosis(200,200,10,0,11*Math.PI,7,100,0.666,3,5);///2*Math.PI/30
f.getContentPane().add(h,BorderLayout.CENTER);
f.setSize(400,400);
h.start();
}};
//package graphics
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.Timer; ///java.util.Timer shi xianshi daoru/**
*pinghua donghua de Swing zujian
*/
public class Hypnosis extends JComponent implements ActionListener
{
double x,y; //luoxuanxian zhongxin
double r1,r2; //luoxuanxian neiwai jing
double a1,a2; //luoxuanxian qishi jiao
double deltaA; //meizhen bianhua jiaodu
double deltaX,deltaY; //zhongxin guidao
float linewidth; //xianchu
Timer timer; //jifa donghua duixiang
BufferedImage buffere; //shuang huanchong tuxiang
Graphics2D osg; //huanchong Graphics2D tuxiang public Hypnosis(double x,double y,double r1,double r2,double a1,double a2,
float linewidth,int delay,double deltaA,double deltaX,double deltaY)
{
this.x=x;this.y=y;
this.r1=r1;this.r2=r2;
this.a1=a1;this.a2=a2;
this.linewidth=linewidth;
this.deltaA=deltaA;
this.deltaX=deltaX;
this.deltaY=deltaY;
//chuangjian yige dishiqi yanshi haomiao diaoyong yici actinperformed()
timer=new Timer(delay,this); //chuangjian shuang huanchong de huanchongqu
buffere=new BufferedImage((int)(2*r2+linewidth),(int)(2*r2+linewidth),BufferedImage.TYPE_INT_RGB);
////chuangjian Graphics duixiang yongyu huanchong,shezhi xianchu
////bing qingqiu baozhen
osg=buffere.createGraphics();
osg.setStroke(new BasicStroke(linewidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
osg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
} ////qidong dingshiqi yi qiting huamian
public void start(){timer.start();}
public void stop(){timer.stop();}
/**
*Swing diaoyong ci fangfa chonghua zujian
*chi fangfa yong shuang huanchong shi donghua pinghua
*Swing zidong shuang huanchong shijishang
*chabie buda dan duiyu lijie jiqiao hen zhongyao
*/ public void paintComponent(Graphics g){
////qingchu pingwai tuxiang beijing
osg.setColor(getBackground());
osg.fillRect(0,0,buffere.getWidth(),buffere.getHeight()); /////zai pingwei tuxiang zhong hua heise luoxuanxian
osg.setColor(Color.black);
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
//////jiang pingwai fuxiang fuzhi [ingmu
g.drawImage(buffere,(int)(x-r1),(int)(y-r2),this);
} /** */
public void actionPerformed(ActionEvent e){
repaint((int)(x-r2-linewidth),(int)(y-r2-linewidth),(int)(2*(r2+linewidth)),(int)(2*(r2+linewidth)));
Rectangle bounds=getBounds();
if((x-r2+deltaX<0)||(x+r2+deltaX>bounds.width))
deltaX=-deltaX;
if((y-r2+deltaY<0)||(y+r2+deltaY>bounds.width))
deltaY=-deltaY;
///YIDONG ZHONGXIN
x+=deltaX;
y+=deltaY; ////zengjia qizhijiao
a1+=deltaA;
a2+=deltaA;
if (a1>2*Math.PI)
{
a1-=2*Math.PI;
a2-=2*Math.PI;
}
repaint((int)(x-r2-linewidth),(int)(y-r2-linewidth),(int)(2*(r2+linewidth)),(int)(2*(r2+linewidth)));
}
public boolean isDoubleBuffered() {return false;} public static void main(String[] args) {
JFrame f=new JFrame("Hypnosis");
Hypnosis h= new Hypnosis(200,200,10,0,11*Math.PI,7,100,0.666,3,5);///2*Math.PI/30
f.getContentPane().add(h,BorderLayout.CENTER);
f.setSize(400,400);
h.start();
}};
在命令行下右键选择标记就可以了
Hypnosis.java:63: シンボルを解決できません。
シンボル: クラス Spiral
場所 : Hypnosis の クラス
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
^
Hypnosis.java:97: シンボルを解決できません。
シンボル: コンストラクタ Hypnosis (int,int,int,int,double,int,int,double,int,int)
場所 : Hypnosis の クラス
Hypnosis h= new Hypnosis(200,200,10,0,11*Math.PI,7,100,0.666,3,5);///2*Math.PI/30
^
エラー 2 個E:\JAVA\graphics>
new Hypnosis(200.0,200.0,10,0,0.0,11*Math.PI,7,100,0.666,3,5);///2*Math.PI/30
(C) Copyright 1985-2000 Microsoft Corp.C:\>e:E:\>cd javaE:\JAVA>cd GraphicsE:\JAVA\graphics>javac
使い方: javac <options> <source files>
使用可能なオプションには次のものがあります。
-g すべてのデバッグ情報を生成する
-g:none デバッグ情報を生成しない
-g:{lines,vars,source} いくつかのデバッグ情報だけを生成する
-nowarn 警告を発生させない
-verbose コンパイラの動作についてメッセージを出力する
-deprecation 推奨されない API が使用されているソースの位置を出力する
-classpath <path> ユーザクラスファイルを検索する位置を指定する
-sourcepath <path> 入力ソースファイルを検索する位置を指定する
-bootclasspath <path> ブートストラップクラスファイルの位置を置き換える
-extdirs <dirs> インストール済み拡張機能の位置を置き換える
-d <directory> 生成されたクラスファイルを格納する位置を指定する
-encoding <encoding> ソースファイルが使用する文字エンコーディングを指定する
-source <release> 指定されたリリースとソースの互換性を保つ
-target <release> 特定の VM バージョン用のクラスファイルを生成する
-help 標準オプションの概要を出力する
E:\JAVA\graphics>javac Hypnosis
javac: Hypnosis は無効なフラグです。
使い方: javac <options> <source files>
使用可能なオプションには次のものがあります。
-g すべてのデバッグ情報を生成する
-g:none デバッグ情報を生成しない
-g:{lines,vars,source} いくつかのデバッグ情報だけを生成する
-nowarn 警告を発生させない
-verbose コンパイラの動作についてメッセージを出力する
-deprecation 推奨されない API が使用されているソースの位置を出力する
-classpath <path> ユーザクラスファイルを検索する位置を指定する
-sourcepath <path> 入力ソースファイルを検索する位置を指定する
-bootclasspath <path> ブートストラップクラスファイルの位置を置き換える
-extdirs <dirs> インストール済み拡張機能の位置を置き換える
-d <directory> 生成されたクラスファイルを格納する位置を指定する
-encoding <encoding> ソースファイルが使用する文字エンコーディングを指定する
-source <release> 指定されたリリースとソースの互換性を保つ
-target <release> 特定の VM バージョン用のクラスファイルを生成する
-help 標準オプションの概要を出力する
E:\JAVA\graphics>javac Hypnosis.java
Hypnosis.java:63: シンボルを解決できません。
シンボル: クラス Spiral
場所 : Hypnosis の クラス
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
^
Hypnosis.java:97: シンボルを解決できません。
シンボル: コンストラクタ Hypnosis (double,double,int,double,double,int,int,double,int,int)
場所 : Hypnosis の クラス
Hypnosis h= new Hypnosis(200.0,200.0,10,0.0,11*Math.PI,7,100,0.666,3,5);///2*Math.PI/30
^
エラー 2 個E:\JAVA\graphics>javac Hypnosis.java
Hypnosis.java:63: シンボルを解決できません。
シンボル: クラス Spiral
場所 : Hypnosis の クラス
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
^
Hypnosis.java:97: シンボルを解決できません。
シンボル: コンストラクタ Hypnosis (double,double,double,double,double,double,int,double,double,double)
場所 : Hypnosis の クラス
Hypnosis h= new Hypnosis(200.0,200.0,10.0,0.0,11*Math.PI,7.0,100,0.666,3.0,5.0);///2*Math.PI/3
0
^
エラー 2 個E:\JAVA\graphics>javac Hypnosis.java
Hypnosis.java:63: シンボルを解決できません。
シンボル: クラス Spiral
場所 : Hypnosis の クラス
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
^
Hypnosis.java:97: シンボルを解決できません。
シンボル: コンストラクタ Hypnosis (double,double,double,double,double,int,int,double,double,double)
場所 : Hypnosis の クラス
Hypnosis h= new Hypnosis(200.0,200.0,10.0,0.0,11*Math.PI,7,100,0.666,3.0,5.0);///2*Math.PI/30
^
エラー 2 個E:\JAVA\graphics>javac Hypnosis.java
Hypnosis.java:29: 精度が落ちている可能性
検出値 : double
期待値 : float
this.linewidth=linewidth;
^
Hypnosis.java:42: シンボルを解決できません。
シンボル: コンストラクタ BasicStroke (double,int,int)
場所 : java.awt.BasicStroke の クラス
osg.setStroke(new BasicStroke(linewidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
^
Hypnosis.java:63: シンボルを解決できません。
シンボル: クラス Spiral
場所 : Hypnosis の クラス
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
^
Hypnosis.java:97: シンボルを解決できません。
シンボル: コンストラクタ Hypnosis (double,double,double,double,double,double,int,double,double,double)
場所 : Hypnosis の クラス
Hypnosis h= new Hypnosis(200.0,200.0,10.0,0.0,11*Math.PI,7.0,100,0.666,3.0,5.0);///2*Math.PI/3
0
^
エラー 4 個E:\JAVA\graphics>javac Hypnosis.java
Hypnosis.java:63: シンボルを解決できません。
シンボル: クラス Spiral
場所 : Hypnosis の クラス
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
^
Hypnosis.java:97: シンボルを解決できません。
シンボル: コンストラクタ Hypnosis (double,double,double,double,double,double,int,double,double,double)
場所 : Hypnosis の クラス
Hypnosis h= new Hypnosis(200.0,200.0,10.0,0.0,11*Math.PI,7.0,100,0.666,3.0,5.0);///2*Math.PI/3
0
^
エラー 2 個E:\JAVA\graphics>
还是报错
Hypnosis.java:63: シンボルを解決できません。
シンボル: クラス Spiral
場所 : Hypnosis の クラス
osg.draw(new Spiral(r2+linewidth/2,r2+linewidth/2,r1,a1,r2,a2));
^
Hypnosis.java:97: シンボルを解決できません。
シンボル: コンストラクタ Hypnosis (double,double,double,double,double,double,int,double,double,double)
場所 : Hypnosis の クラス
Hypnosis h= new Hypnosis(200.0,200.0,10.0,0.0,11*Math.PI,7.0,100,0.666,3.0,5.0);///2*Math.PI/3
0
^
エラー 2 個1。第一个是说Spiral类找不到
2。第二个是发生在Hypnosis构造函数的错误楼主再具体的看看这两处的代码。
float linewidth,int delay,double deltaA,double deltaX,double deltaY)Hypnosis h= new Hypnosis(200.0,200.0,10.0,0.0,11*Math.PI,7.0,100,0.666,3.0,5.0);定义了11个参数,只传入10个。