0

私はJavaを使い始めていますが、問題があります。人々がJavaアプレットで「a」をクリックすると、黄色の長方形が描画され、他の何かを押すと黒い長方形が描画されますが、何も起こりません。

    import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;

public class guitarGame extends Applet implements ActionListener, KeyListener{

    Timer timer = new Timer (1000, this);
    String s = "";
    char a;
    int selection;

    public void keyReleased(KeyEvent ae){}

    public void keyPressed(KeyEvent ae){}

    public void keyTyped(KeyEvent ae){
        a = ae.getKeyChar();
    }

    public void init(){
        addKeyListener(this);
    }

    public void actionPerformed (ActionEvent ae)
    {
        if (a == a)
        {
            selection = 1;
        }
        else{
            selection = 2;
        }
    }

    public void paint (Graphics g)
    {
        if (selection == 1){
            g.setColor(Color.YELLOW);
            g.fillRect(100,100,100,100);
        }
        if (selection == 2){
            g.setColor(Color.YELLOW);
            g.fillRect(100,100,100,100);
        }
        repaint();
    }
}

何か助けはありますか?

4

1 に答える 1

1

KeyListenerあなたはあなたの方法で何もしていません。ActionListenerコンポーネントに登録されていないため、呼び出されることはありません。

public void keyPressed(KeyEvent ae){
   char keyChar = ae.getKeyChar();
   if (keyChar == 'a' ) {
      selection = 1;
   } else {
      selection = 2;
   }

   repaint();
}

いくつかの提案:

  • repaint内部で呼び出さないでくださいpaint- これにより、後者が無期限にループします
  • enumsペイントの選択には、マジック ナンバーではなく使用します。
  • 電話super.paint(g)
  • 古い重量級の AWT よりもはるかに優れたパフォーマンスを持つ Swing の使用を検討してください。
于 2013-04-29T23:12:22.920 に答える