我正在编写一个小代码,用户在框架上设置不同按钮上的烟花保险丝,然后当他按下启动动画时,会弹出一个新窗口并在其上绘制烟花,一种名为peindre的方法,我知道它已经可以使用了(我仔细测试了它)。
当我编译用于此框架的类时,会出现一个带有所需按钮的窗口,一切顺利,直到我按下启动动画,在这种情况下只显示一个黑色窗口。 peindre做的第一件事(代码在下面)是将整个窗口涂成黑色,然后它为每个等待一定时间的保险丝启动线程,然后绘制保险丝并擦除它们,这在我直接测试时起作用。但在这里我看不到任何保险丝出现!我可以在主要的时候自己创建一个,所以这真的是我的程序无法获得用户输入的信息的问题。
//ATTRIBUTES
public TextField duree, tpsExplosion, altitude, avancement, puissEtincelles ;
public double dureed, tpsExplosiond, xf, yf, puissEtincellesd ;
public boolean bicoloreb ;
public Choice choixForme, choixCouleur ;
public String forme ;
public Color couleur ;
public Button plus ;
public Button animation ;
public Checkbox bicolore ;
public FenetreAnimeeSansCanvas fenetreAnimee ;
public FenetreNouvelleFusee fenetreNouvelleFusee ;
int numero = 0 ;
public String choixFormes, choixCouleurs;
static final long serialVersionUID=1L;
//CONSTRUCTOR
public AnimationSansCanvas() {
super("AnimationSansCanvas") ;
altitude = new TextField("Altitude de l'explosion") ;
avancement = new TextField("Position de l'explosion sur l'axe des abscisses");
duree = new TextField("Durée de l'affichage de la fusée") ;
tpsExplosion = new TextField("Moment de l'explosion (par rapport au début de l'animation)");
choixForme = new Choice();
choixForme.add("Choix de la forme :");
choixForme.add("Étoile");
choixForme.add("Croix");
choixForme.add("Point");
choixCouleur = new Choice();
choixCouleur.add("Choix de la couleur :");
choixCouleur.add("Rouge");
choixCouleur.add("Vert");
choixCouleur.add("Bleu");
choixCouleur.add("Rose");
choixCouleur.add("Jaune");
choixCouleur.add("Orange");
puissEtincelles = new TextField("Puissance de 8 du nombre d'étincelles");
plus = new Button("Ajouter une fusée") ;
animation = new Button ("Lancer l'animation") ;
bicolore = new Checkbox("Fusée bicolore (la deuxième moitié sera rouge)", false) ;
setLayout(new FlowLayout());
this.add(altitude) ;
this.add(avancement) ;
this.add(duree);
this.add(tpsExplosion);
this.add(choixForme);
this.add(choixCouleur);
this.add(puissEtincelles);
this.add(plus);
this.add(animation);
this.add(bicolore);
altitude.addActionListener(this);
avancement.addActionListener(this);
duree.addActionListener(this);
tpsExplosion.addActionListener(this);
puissEtincelles.addActionListener(this);
plus.addActionListener(this);
animation.addActionListener(this);
choixCouleur.addItemListener(this);
choixForme.addItemListener(this);
bicolore.addItemListener(this);
addWindowListener(new EcouteurPourFermetureFenetre()); //pour tout arrêter en cas de fermeture de fenêtre
setResizable(true);
fenetreAnimee = new FenetreAnimeeSansCanvas() ;
fenetreAnimee.setVisible(true);
}
//METHODES
public void actionPerformed(ActionEvent evt){
if (evt.getSource() == plus){
numero += 1 ;
fenetreNouvelleFusee = new FenetreNouvelleFusee() ;
fenetreNouvelleFusee.numero = numero ;
fenetreNouvelleFusee.setVisible(true);
fenetreAnimee.fusees.add(fenetreNouvelleFusee.fuse) ;
}
if (evt.getSource() == animation){
numero += 1 ;
Fusee fuse = new Fusee(numero) ;
puissEtincellesd =
Double.valueOf(puissEtincelles.getText());
tpsExplosiond = Double.valueOf(tpsExplosion.getText());
dureed = Double.valueOf(duree.getText());
xf = Double.valueOf(avancement.getText());
yf = Double.valueOf(altitude.getText());
fuse.bicolore = bicolore.getState() ;
fuse.couleur = couleur ;
fuse.puissEtincelles = (int)puissEtincellesd ;
fuse.xf = xf ;
fuse.yf = yf ;
fuse.forme = forme ;
fuse.duree = dureed ;
fuse.tpsDepart = tpsExplosiond ;
fenetreAnimee.fusees.add(fuse) ;
fenetreAnimee.peindre(fenetreAnimee.getGraphics());
fenetreAnimee.setVisible(true);
}
public void itemStateChanged(ItemEvent ivt){
if (ivt.getSource()==choixCouleur){
if (choixCouleur.getSelectedItem()=="Rose"){
couleur = Color.pink ;
}
if (choixCouleur.getSelectedItem()=="Bleu"){
couleur = Color.blue ;
}
if (choixCouleur.getSelectedItem()=="Vert"){
couleur = Color.green ;
}
if (choixCouleur.getSelectedItem()=="Rouge"){
couleur = Color.red ;
}
if (choixCouleur.getSelectedItem()=="Jaune") {
couleur = Color.yellow ;
}
if (choixCouleur.getSelectedItem()=="Orange") {
couleur = Color.orange ;
}
}
}
//MAIN
public static void main(String [] abs){
AnimationSansCanvas anim = new AnimationSansCanvas();
anim.setLocation(100, 100);
anim.setSize(600, 450);
anim.setVisible(true);
}
}
我必须在获取用户提供的信息方面做错事,但我看不出自己的错误!当我在主要部分添加一个保险丝时,它会很好地绘制它,它似乎没有得到我在框架中输入的信息。如果有人能告诉我我的程序有什么问题,那就太好了。)
这里是fenetreAnimeeSansCanvas,fenetreNouvelleFusee,Etincelle和Fusee的代码! (不要觉得你需要看它,以防你想要编译整个程序)
(在peindre中,线程只计算时间过去,然后绘制保险丝,然后在时间结束时再次擦除它们)
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.* ;
import java.util.concurrent.*;
public class FenetreAnimeeSansCanvas extends Frame {
//ATTRIBUTS
public LinkedList <Fusee> fusees ;
int w,h, numEnCours=1, numMax = 1, puissEtincellesMax=1 ;
double duree = 1 ;
boolean suspended ;
//CONSTRUCTEUR
public FenetreAnimeeSansCanvas() {
super("FenetreAnimeeSansCanvas") ;
setSize(1200,700) ;
setLocation(120,100) ;
setResizable(true) ;
w = this.getSize().width ;
h = this.getSize().height ;
addWindowListener(new EcouteurPourFermetureFenetre());
fusees = new LinkedList() ;
}
//METHODES
public void peindre(Graphics gr){
gr.setColor(Color.black);
gr.fillRect(0, 0, w, h);
for (Fusee fus : fusees) {
fus.g = gr ;
fus.anim.start();
}
}
//MAIN
public static void main(String [] abs){
FenetreAnimeeSansCanvas fen = new FenetreAnimeeSansCanvas() ;
fen.setVisible(true) ;
Fusee fus = new Fusee(1) ;
fus.forme = "point" ;
fus.tpsDepart = 5 ;
fus.puissEtincelles = 6 ;
fus.couleur = Color.orange ;
fus.duree = 10 ;
fus.xf = 567 ;
fus.yf = 590 ;
fus.active = true ;
fen.fusees.add(fus) ;
Fusee fus1 = new Fusee(2) ;
fus1.forme = "etoile" ;
fus1.tpsDepart = 12 ;
fus1.puissEtincelles = 12 ;
fus1.couleur = Color.pink ;
fus1.duree = 20 ;
fus1.xf = 1000 ;
fus1.yf = 150 ;
fus1.active = true ;
fen.fusees.add(fus1) ;
Fusee fus2 = new Fusee(3) ;
fus2.forme = "croix" ;
fus2.bicolore = true ;
fus2.tpsDepart = 10 ;
fus2.puissEtincelles = 8 ;
fus2.couleur = Color.green ;
fus2.duree = 32 ;
fus2.xf = 276 ;
fus2.yf = 290 ;
fus2.active = true ;
fen.fusees.add(fus2) ;
Fusee fus3 = new Fusee(3) ;
fus3.forme = "point" ;
fus3.tpsDepart = 14 ;
fus3.bicolore = true ;
fus3.puissEtincelles = 12 ;
fus3.couleur = Color.blue ;
fus3.duree = 20 ;
fus3.xf = 850 ;
fus3.yf = 370 ;
fus3.active = true ;
fen.fusees.add(fus3) ;
Graphics gr = fen.getGraphics();
fen.peindre(gr);
}
}
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.* ;
public class FenetreNouvelleFusee extends Frame implements ActionListener, ItemListener{
//ATTRIBUTS
public TextField duree, tpsExplosion, altitude, avancement, puissEtincelles ;
public double dureed, tpsExplosiond, xf, yf, puissEtincellesd ;
public Choice choixForme, choixCouleur ;
public String forme ;
public Color couleur ;
public Button pret ;
public Checkbox bicolore ;
public int numero ;
public String choixFormes, choixCouleurs;
public Fusee fuse ;
static final long serialVersionUID=1L;
//CONSTRUCTEUR
public FenetreNouvelleFusee() {
super("FenetreNouvelleFusee") ;
setSize(600,450) ;
setLocation(150,150) ;
altitude = new TextField("Altitude de l'explosion") ;
avancement = new TextField("Position de l'explosion sur l'axe des abscisses");
duree = new TextField("Durée de l'affichage de la fusée") ;
tpsExplosion = new TextField("Moment de l'explosion (par rapport au début de l'animation)");
choixForme = new Choice();
choixForme.add("Choix de la forme :");
choixForme.add("Étoile");
choixForme.add("Croix");
choixForme.add("Point");
choixCouleur = new Choice();
choixCouleur.add("Choix de la couleur :");
choixCouleur.add("Rouge");
choixCouleur.add("Vert");
choixCouleur.add("Bleu");
choixCouleur.add("Rose");
choixCouleur.add("Jaune");
choixCouleur.add("Orange");
bicolore = new Checkbox("Fusée bicolore (la deuxième moitié sera rouge)", false) ;
puissEtincelles = new TextField("Puissance de 8 du nombre d'étincelles");
pret = new Button("Fusée prête !") ;
setLayout(new FlowLayout());
this.add(altitude) ;
this.add(avancement) ;
this.add(duree);
this.add(tpsExplosion);
this.add(choixForme);
this.add(choixCouleur);
this.add(puissEtincelles);
this.add(pret);
this.add(bicolore);
altitude.addActionListener(this);
avancement.addActionListener(this);
duree.addActionListener(this);
tpsExplosion.addActionListener(this);
puissEtincelles.addActionListener(this);
pret.addActionListener(this);
choixCouleur.addItemListener(this);
choixForme.addItemListener(this);
bicolore.addItemListener(this);
addWindowListener(new EcouteurPourFermetureFenetre());
setResizable(true);
}
//METHODES
public void actionPerformed(ActionEvent evt){
if (evt.getSource() == pret){
numero += 1 ;
fuse = new Fusee(numero) ;
puissEtincellesd = Double.valueOf(puissEtincelles.getText());
tpsExplosiond = Double.valueOf(tpsExplosion.getText());
dureed = Double.valueOf(duree.getText());
xf = Double.valueOf(avancement.getText());
yf = Double.valueOf(altitude.getText());
fuse.bicolore = bicolore.getState() ;
fuse.couleur = couleur ;
fuse.puissEtincelles = (int)puissEtincellesd ;
fuse.xf = xf ;
fuse.yf = yf ;
fuse.forme = forme ;
fuse.duree = dureed ;
fuse.tpsDepart = tpsExplosiond ;
fuse.puissEtincelles = (int)puissEtincellesd ;
setVisible(false) ;
}
}
public void itemStateChanged(ItemEvent ivt){
if (ivt.getSource()==choixCouleur){
if (choixCouleur.getSelectedItem()=="Rose"){
couleur = Color.pink ;
}
if (choixCouleur.getSelectedItem()=="Bleu"){
couleur = Color.blue ;
}
if (choixCouleur.getSelectedItem()=="Vert"){
couleur = Color.green ;
}
if (choixCouleur.getSelectedItem()=="Rouge"){
couleur = Color.red ;
}
if (choixCouleur.getSelectedItem()=="Jaune") {
couleur = Color.yellow ;
}
if (choixCouleur.getSelectedItem()=="Orange") {
couleur = Color.orange ;
}
}
if (ivt.getSource()==choixForme){
forme = choixForme.getSelectedItem();
}
}
//MAIN
public static void main(String [] abs){
FenetreNouvelleFusee fen = new FenetreNouvelleFusee();
fen.setVisible(true) ;
}
}
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.math.*;
import java.awt.Image;
import java.awt.image.BufferedImage;
public class Etincelle {
//ATTRIBUTS
public Color couleur ;
public double duree, x,y ;
public String forme ;
public BufferedImage image ;
Graphics g ;
//CONSTRUCTEUR
public Etincelle(double a, double b){
x=a;
y=b;
forme = "croix";
couleur=Color.red ;
image = new BufferedImage(15,15, BufferedImage.TYPE_INT_ARGB);
g = image.createGraphics();
}
//METHODES
public void peindreEtincelle(Graphics globalg) {
g.setColor(couleur);
if (forme == "croix") {
g.drawLine(6-5, 6, 6+5, 6);
g.drawLine(6, 6-5, 6, 6+5);
}
else if (forme == "point"){
g.fillOval(6, 6, 8, 8);
}
else if (forme=="etoile"){
g.drawLine(6-5, 6, 6+5, 6);
g.drawLine(6, 6-5, 6, 6+5);
g.drawLine(6-5, 6-5, 6+5, 6+5);
g.drawLine(6-5, 6+5, 6+5, 6-5);
}
globalg.drawImage(image,(int)x,(int)y,null);
}
//MAIN
public static void main(String[] args) {
}
}
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.math.*;
public class Fusee extends Canvas implements Runnable {
//ATTRIBUTS
public int num, puissEtincelles, nbEtincelles;
public double xf, yf, duree, tpsDepart ;
public boolean active = true, bicolore = false, suspended = false ;
public String forme ;
public Thread anim ;
public int k = 0 ;
public Color couleur, couleur2 = Color.red ;
public static double DIV = 1%(Math.sqrt(2)) ;
public LinkedList<Etincelle> liste;
public Graphics g;
int w, h ;
static final long serialVersionUID=1L;
//CONSTRUCTEUR
public Fusee(int numero){ /
num = numero ;
active = true ;
couleur = Color.red ;
nbEtincelles = 1 + 8^puissEtincelles;
anim = new Thread(this) ;
liste = new LinkedList<Etincelle>() ;
liste.add(new Etincelle(xf,yf));
for (int k =1 ; k<=puissEtincelles ;k++){
liste.add(new Etincelle(xf+10*k,yf));
liste.add(new Etincelle(xf-10*k,yf));
liste.add(new Etincelle(xf,yf+10*k));
liste.add(new Etincelle(xf,yf-5*k));
liste.add(new Etincelle(xf+10*k*DIV,yf+10*k*DIV));
liste.add(new Etincelle(xf+10*k*DIV,yf-10*k*DIV));
liste.add(new Etincelle(xf-10*k*DIV,yf+10*k*DIV));
liste.add(new Etincelle(xf-10*k*DIV,yf-10*k*DIV));
}
w = 1200 ;
h = 700 ;
}
//METHODE
public void run(){
while (true){
if (active == true){
if (tpsDepart == 0) {
if (duree>0){
if (bicolore == false) {
duree = duree-1 ;
peindreFusee(g) ;
if (k<puissEtincelles) {
k+=1 ;
}
}
else if (bicolore == true){
duree = duree-1 ;
peindreFuseeBicolore(g) ;
if (k<puissEtincelles) {
k+=1 ;
}
}
}
else if (duree == 0){
active = false ;
}
}
else if (tpsDepart >0){
tpsDepart = tpsDepart - 1 ;
}
}
else if (active == false){
couleur = Color.black ;
peindreFuseeFin(g) ;
}
else if (bicolore == true){
couleur2 = Color.black ;
peindreFuseeBicoloreFin(g) ;
}
anim.stop();
}
try {
Thread.sleep(400);
}
catch(InterruptedException e) {
System.out.println(e);
}
}
}
public String toString(){
String chaine = "Numéro fusée" ;
chaine += " " + String.valueOf(num);
chaine += " " +String.valueOf(yf);
chaine += " " +String.valueOf(xf);
chaine += " " +String.valueOf(duree);
chaine += " " +String.valueOf(tpsDepart);
chaine += " " +String.valueOf(forme);
chaine += " " +String.valueOf(couleur);
chaine += " " +String.valueOf(puissEtincelles);
chaine += " " +String.valueOf(bicolore);
return chaine ;
}
public void peindreFusee (Graphics g){
Etincelle etinc0 = new Etincelle(xf,yf) ;
etinc0.couleur = couleur ;
etinc0.forme = forme ;
etinc0.duree = duree ;
etinc0.peindreEtincelle(g);
Etincelle etinc1 = new Etincelle(xf+10*k,yf) ;
etinc1.couleur = couleur ;
etinc1.forme = forme ;
etinc1.duree = duree ;
etinc1.peindreEtincelle(g);
Etincelle etinc2 = new Etincelle(xf-10*k,yf) ;
etinc2.couleur = couleur ;
etinc2.forme = forme ;
etinc2.duree = duree ;
etinc2.peindreEtincelle(g);
Etincelle etinc3 = new Etincelle(xf,yf+10*k) ;
etinc3.couleur = couleur ;
etinc3.forme = forme ;
etinc3.duree = duree ;
etinc3.peindreEtincelle(g);
Etincelle etinc4 = new Etincelle(xf,yf-10*k) ;
etinc4.couleur = couleur ;
etinc4.forme = forme ;
etinc4.duree = duree ;
etinc4.peindreEtincelle(g);
Etincelle etinc5 = new Etincelle(xf+10*k*DIV,yf+10*k*DIV) ;
etinc5.couleur = couleur ;
etinc5.forme = forme ;
etinc5.duree = duree ;
etinc5.peindreEtincelle(g);
Etincelle etinc6 = new Etincelle(xf+10*k*DIV,yf-10*k*DIV) ;
etinc6.couleur = couleur ;
etinc6.forme = forme ;
etinc6.duree = duree ;
etinc6.peindreEtincelle(g);
Etincelle etinc7 = new Etincelle(xf-10*k*DIV,yf+10*k*DIV) ;
etinc7.couleur = couleur ;
etinc7.forme = forme ;
etinc7.duree = duree ;
etinc7.peindreEtincelle(g);
Etincelle etinc8 = new Etincelle(xf-10*k*DIV,yf-10*k*DIV) ;
etinc8.couleur = couleur ;
etinc8.forme = forme ;
etinc8.duree = duree ;
etinc8.peindreEtincelle(g);
}
public void peindreFuseeBicolore (Graphics g){
Etincelle etinc0 = new Etincelle(xf,yf) ;
etinc0.couleur = couleur ;
etinc0.forme = forme ;
etinc0.duree = duree ;
etinc0.peindreEtincelle(g);
Etincelle etinc1 = new Etincelle(xf+10*k,yf) ;
etinc1.couleur = couleur ;
etinc1.forme = forme ;
etinc1.duree = duree ;
etinc1.peindreEtincelle(g);
Etincelle etinc2 = new Etincelle(xf-10*k,yf) ;
etinc2.couleur = couleur2 ;
etinc2.forme = forme ;
etinc2.duree = duree ;
etinc2.peindreEtincelle(g);
Etincelle etinc3 = new Etincelle(xf,yf+10*k) ;
etinc3.couleur = couleur ;
etinc3.forme = forme ;
etinc3.duree = duree ;
etinc3.peindreEtincelle(g);
Etincelle etinc4 = new Etincelle(xf,yf-10*k) ;
etinc4.couleur = couleur2 ;
etinc4.forme = forme ;
etinc4.duree = duree ;
etinc4.peindreEtincelle(g);
Etincelle etinc5 = new Etincelle(xf+10*k*DIV,yf+10*k*DIV) ;
etinc5.couleur = couleur ;
etinc5.forme = forme ;
etinc5.duree = duree ;
etinc5.peindreEtincelle(g);
Etincelle etinc6 = new Etincelle(xf+10*k*DIV,yf-10*k*DIV) ;
etinc6.couleur = couleur ;
etinc6.forme = forme ;
etinc6.duree = duree ;
etinc6.peindreEtincelle(g);
Etincelle etinc7 = new Etincelle(xf-10*k*DIV,yf+10*k*DIV) ;
etinc7.couleur = couleur2 ;
etinc7.forme = forme ;
etinc7.duree = duree ;
etinc7.peindreEtincelle(g);
Etincelle etinc8 = new Etincelle(xf-10*k*DIV,yf-10*k*DIV) ;
etinc8.couleur = couleur2 ;
etinc8.forme = forme ;
etinc8.duree = duree ;
etinc8.peindreEtincelle(g);
}
public void peindreFuseeFin(Graphics g){
Etincelle etinc0 = new Etincelle(xf,yf) ;
etinc0.couleur = couleur ;
etinc0.forme = forme ;
etinc0.duree = duree ;
etinc0.peindreEtincelle(g);
for (int k=1 ; k<=puissEtincelles +3 ; k++){
Etincelle etinc1 = new Etincelle(xf+10*k,yf) ;
etinc1.couleur = couleur ;
etinc1.forme = forme ;
etinc1.duree = duree ;
etinc1.peindreEtincelle(g);
Etincelle etinc2 = new Etincelle(xf-10*k,yf) ;
etinc2.couleur = couleur ;
etinc2.forme = forme ;
etinc2.duree = duree ;
etinc2.peindreEtincelle(g);
Etincelle etinc3 = new Etincelle(xf,yf+10*k) ;
etinc3.couleur = couleur ;
etinc3.forme = forme ;
etinc3.duree = duree ;
etinc3.peindreEtincelle(g);
Etincelle etinc4 = new Etincelle(xf,yf-10*k) ;
etinc4.couleur = couleur ;
etinc4.forme = forme ;
etinc4.duree = duree ;
etinc4.peindreEtincelle(g);
Etincelle etinc5 = new Etincelle(xf+10*k*DIV,yf+10*k*DIV) ;
etinc5.couleur = couleur ;
etinc5.forme = forme ;
etinc5.duree = duree ;
etinc5.peindreEtincelle(g);
Etincelle etinc6 = new Etincelle(xf+10*k*DIV,yf-10*k*DIV) ;
etinc6.couleur = couleur ;
etinc6.forme = forme ;
etinc6.duree = duree ;
etinc6.peindreEtincelle(g);
Etincelle etinc7 = new Etincelle(xf-10*k*DIV,yf+10*k*DIV) ;
etinc7.couleur = couleur ;
etinc7.forme = forme ;
etinc7.duree = duree ;
etinc7.peindreEtincelle(g);
Etincelle etinc8 = new Etincelle(xf-10*k*DIV,yf-10*k*DIV) ;
etinc8.couleur = couleur ;
etinc8.forme = forme ;
etinc8.duree = duree ;
etinc8.peindreEtincelle(g);
}
}
public void peindreFuseeBicoloreFin(Graphics g){
Etincelle etinc0 = new Etincelle(xf,yf) ;
etinc0.couleur = couleur ;
etinc0.forme = forme ;
etinc0.duree = duree ;
etinc0.peindreEtincelle(g);
for (int k=1 ; k<=puissEtincelles +3; k++){
Etincelle etinc1 = new Etincelle(xf+10*k,yf) ;
etinc1.couleur = couleur ;
etinc1.forme = forme ;
etinc1.duree = duree ;
etinc1.peindreEtincelle(g);
Etincelle etinc2 = new Etincelle(xf-10*k,yf) ;
etinc2.couleur = couleur2 ;
etinc2.forme = forme ;
etinc2.duree = duree ;
etinc2.peindreEtincelle(g);
Etincelle etinc3 = new Etincelle(xf,yf+10*k) ;
etinc3.couleur = couleur ;
etinc3.forme = forme ;
etinc3.duree = duree ;
etinc3.peindreEtincelle(g);
Etincelle etinc4 = new Etincelle(xf,yf-10*k) ;
etinc4.couleur = couleur2 ;
etinc4.forme = forme ;
etinc4.duree = duree ;
etinc4.peindreEtincelle(g);
Etincelle etinc5 = new Etincelle(xf+10*k*DIV,yf+10*k*DIV) ;etinc1.couleur = couleur ;
etinc5.couleur = couleur ;
etinc5.forme = forme ;
etinc5.duree = duree ;
etinc5.peindreEtincelle(g);
Etincelle etinc6 = new Etincelle(xf+10*k*DIV,yf-10*k*DIV) ;
etinc6.couleur = couleur2 ;
etinc6.forme = forme ;
etinc6.duree = duree ;
etinc6.peindreEtincelle(g);
Etincelle etinc7 = new Etincelle(xf-10*k*DIV,yf+10*k*DIV) ;
etinc7.couleur = couleur2 ;
etinc7.forme = forme ;
etinc7.duree = duree ;
etinc7.peindreEtincelle(g);
Etincelle etinc8 = new Etincelle(xf-10*k*DIV,yf-10*k*DIV) ;
etinc8.couleur = couleur2 ;
etinc8.forme = forme ;
etinc8.duree = duree ;
etinc8.peindreEtincelle(g);
}
}
}
答案 0 :(得分:0)
您的代码没有覆盖布尔操作()方法,因为该方法只运行一次,其中 TextField 的初始化文本。在主方法之后添加此代码:
@Override
public boolean action(Event EV, Object obj){
repaint(); //this statement is missing in your code
return true;
}
这应该有效。我测试了它在applet中的缺席,我遇到了和你一样的错误。
修改强>
由于你的程序没有paint()方法(我应该注意到它)并且按钮似乎没有起作用,试着在你的程序中实现以下代码来处理由单击按钮时:(认为按钮动画标记为&#34;开始动画&#34; )
public boolean handleEvent(Event EV){
if(EV.target instanceof Button){
if(EV.arg.equals("Start Animation"))
//do what you want to do when button is clicked
}
return super.handleEvent(EV);
}
也许你错过了这个或类似的部分。