0

私は無限に秒を追加し続けたい単純なJavaアプレットに取り組んでいます(したがって、1秒のノンストップを追加するg.drawStringがあります。アプレットにスイングタイマーを入れました。アプレットは 1 秒ごとに再描画します (アプレットでタイマーを 1 秒に設定しているため) 試してみましたが、アプレットは 1 秒ごとではなく、1 秒ごとに数千単位で印刷されます。

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);
int amount;

public void init(){
    amount = 0;
    addKeyListener(this);
}

public void keyReleased(KeyEvent ae){}

public void keyPressed(KeyEvent ae){

    repaint();
}

public void keyTyped(KeyEvent ae){}

public void actionPerformed (ActionEvent ae){}
public void paint (Graphics g)
{
    amount += 1;
    g.drawString(amount+"Seconds",400,400);
    repaint();
}
}

何か助けはありますか?

4

1 に答える 1

1

javax.swing.Timer「クリック」するには起動する必要があります

「クリック」はactionPerformed、割り当てられたメソッド内でトリガーされますActionListener

public class guitarGame extends Applet implements ActionListener, KeyListener {

    Timer timer = new Timer (1000, this);
    int amount;

    public void init(){
        amount = 0;
        //addKeyListener(this);
        timer.setRepeats(true);
        timer.starts();
    }

    public void keyReleased(KeyEvent ae){}

    public void keyPressed(KeyEvent ae){

        repaint();
    }

    public void keyTyped(KeyEvent ae){}

    public void actionPerformed (ActionEvent ae){
        amount++;
        repaint();
    }
    public void paint (Graphics g)
    {
        // Do this or suffer increasingly bad paint artefacts
        super.paint(g);
        // This is the wrong place for this...
        //amount += 1;
        g.drawString(amount+"Seconds",400,400);
        // This is an incredibly bad idea
        //repaint();
    }
}
于 2013-04-30T20:35:03.127 に答える