簡體   English   中英

JAVA:在使用 Actionlistener 時遇到問題

[英]JAVA: Having trouble with Actionlistener

我是 Java 和這個網站的初學者。 我在 JCreator 中為學校編寫的小程序出現問題。 鼠標偵聽器工作正常,但動作偵聽器不行。 actionlistener 中的“if”和“else”語句應該使按鈕在被點擊時改變背景顏色,但它們不會......這里的任何幫助將不勝感激!

謝謝! (見下面的代碼)

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class MilestoneTwo extends Applet
                      implements MouseListener, ActionListener {

private int x = 50, y = 50;

int n = 10;
Color[] rainbow; 
int c = 0;
Button redButton;
Button blueButton;
Button greenButton;
int r = 50;
int g = 50;
int b = 50;




   public void init() {


  redButton = new Button ( "MAKE BG MORE RED" );
  blueButton = new Button ( "MAKE BG MORE BLUE" );
  greenButton = new Button ( "MAKE BG MORE GREEN" );
 add ( redButton );
  redButton.addActionListener ( this );
 add ( blueButton );
  blueButton.addActionListener ( this );
  add ( greenButton );
  greenButton.addActionListener ( this );





 // RGB ARRAY
 rainbow = new Color[ n ];

//loading array cells with colours

rainbow[ 0 ] = new Color( 90, 150, 110 ); 
rainbow[ 1 ] = new Color( 50, 250, 100 ); 
rainbow[ 2 ] = new Color( 250, 200, 10 ); 
rainbow[ 3 ] = new Color(4, 60, 123 );
rainbow[ 4 ] = new Color(230, 70, 15 );
rainbow[ 5 ] = new Color(20, 30, 230 );
rainbow[ 6 ] = new Color(255, 35, 179 );
rainbow[ 7 ] = new Color(110, 10, 40 );
rainbow[ 8 ] = new Color(r, g, b );





    // Registering MouseListener 
   addMouseListener(this);

}


public void paint(Graphics g) {

   //if statements for circle colour



    setBackground(rainbow[ 8 ]);

     if (c == 0){ g.setColor(rainbow[ 0 ]); 
     }
  else if (c==1){ g.setColor(rainbow[ 1 ]);
   }

   else if (c==2){ g.setColor(rainbow[ 2 ]);
   }

  else if (c==3) { g.setColor(rainbow[ 3 ]);
   }

  else if (c==4){ g.setColor (rainbow[ 4 ]);
   }

   else if (c==5){ g.setColor (rainbow[ 5 ]);
   }

    else if (c==6){ g.setColor (rainbow[ 6 ]);
   }

    else if (c==7){ ;
    g.setColor (rainbow[ 7 ]);
   }

  g.fillOval( x, y, 75,75 );



    }


public void actionPerformed(ActionEvent z) { 


    if (z.getSource() == redButton) 
    {

if (r==250){ 
r=0;
}

         else  {
          r = (r+50);
          }

      } 

     else if (z.getSource() == blueButton) {

         if (b==250){ 
          b=0;
          }

         else  {
          b = (b+50);
          }


 }

    else if (z.getSource() == greenButton) {

        if (g==250){ 
        g=0;
        }

        else  {
         g = (g+50);
         }

 }


      repaint();
 }






    // what's executed upon click.
 public void mouseClicked(MouseEvent e) {

    x = e.getX();
    y = e.getY();

    if (c > 7) { c = 0; //reset of c if needed
    }
    else { c = (c+1);
    }
    repaint();

 }
   // useless methods

  public void mouseExited(MouseEvent e) { }

  public void mouseEntered(MouseEvent e) { }

 public void mousePressed(MouseEvent e) { }

public void mouseReleased(MouseEvent e) { }




   }  

除了在程序開始時,您永遠不會在任何地方更改 Rainbow[8]。 僅更改 r、g 或 b 不會神奇地更改顏色,而是必須在操​​作偵聽器中編寫代碼以在按下按鈕后設置顏色。

所以換句話說,調用

rainbow[ 8 ] = new Color(r, g, b );

更改 r、g 或 b 后,在 ActionListener 的末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM