Timer 如何从计时器中删除毫秒

Timer 如何从计时器中删除毫秒,timer,Timer,我正在为学校制作这个游戏,我正在尝试为关卡添加一个计时器。我让计时器工作,但不是我想要的方式。它会刷新,并且有毫秒。我搜索了每个网站的答案,但我只能找到日期和时间,或者如何显示它们。我需要的正好相反 package GameState; import Main.GamePanel; import TileMap.*; import Entity.*; import Entity.Enemies.*; import Audio.AudioPlayer; //timer imports impor

我正在为学校制作这个游戏,我正在尝试为关卡添加一个计时器。我让计时器工作,但不是我想要的方式。它会刷新,并且有毫秒。我搜索了每个网站的答案,但我只能找到日期和时间,或者如何显示它们。我需要的正好相反

package GameState;

import Main.GamePanel;
import TileMap.*;
import Entity.*;
import Entity.Enemies.*;
import Audio.AudioPlayer;
//timer imports
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.ArrayList;

public class Level1State extends GameState {

private TileMap tileMap;
private Background bg;
private static int cnt;
private Player player;

private ArrayList<Enemy> enemies;
private ArrayList<Explosion> explosions;

private HUD hud;

private AudioPlayer bgMusic;

public Level1State(GameStateManager gsm) {
    this.gsm = gsm;
    init();
}

public void init() {

    tileMap = new TileMap(30);
    tileMap.loadTiles("/Tilesets/grasstileset.gif");
    tileMap.loadMap("/Maps/level1-1.map");
    tileMap.setPosition(0, 0);
    tileMap.setTween(1);

    bg = new Background("/Backgrounds/grassbg1.2.jpg", 0.1);

    player = new Player(tileMap);
    player.setPosition(100, 100);

    populateEnemies();

    explosions = new ArrayList<Explosion>();

    hud = new HUD(player);

    bgMusic = new AudioPlayer("/Music/level1-1.mp3");
    bgMusic.play();

}

private void populateEnemies() {

    enemies = new ArrayList<Enemy>();

    Slugger s;
    Point[] points = new Point[] {
        new Point(200, 100), 
        new Point(860, 200),
        new Point(1525, 200),
        new Point(1680, 200),
        new Point(1800, 200)
    };
    for(int i = 0; i < points.length; i++) {
        s = new Slugger(tileMap);
        s.setPosition(points[i].x, points[i].y);
        enemies.add(s);
    }

}

public void update() {

    // update player
    player.update();
    tileMap.setPosition(
        GamePanel.WIDTH / 2 - player.getx(),
        GamePanel.HEIGHT / 2 - player.gety()
    );

    // set background
    bg.setPosition(tileMap.getx(), tileMap.gety());

    // attack enemies
    player.checkAttack(enemies);

    // update all enemies
    for(int i = 0; i < enemies.size(); i++) {
        Enemy e = enemies.get(i);
        e.update();
        if(e.isDead()) {
            enemies.remove(i);
            i--;
            explosions.add(
                new Explosion(e.getx(), e.gety()));
        }
    }

    // update explosions
    for(int i = 0; i < explosions.size(); i++) {
        explosions.get(i).update();
        if(explosions.get(i).shouldRemove()) {
            explosions.remove(i);
            i--;
        }
    }

}

public void draw(final Graphics2D g) {

    // draw bg
    bg.draw(g);

    // draw tilemap
    tileMap.draw(g);

    // draw player
    player.draw(g);

    // draw enemies
    for(int i = 0; i < enemies.size(); i++) {
        enemies.get(i).draw(g);
    }

    // draw explosions
    for(int i = 0; i < explosions.size(); i++) {
        explosions.get(i).setMapPosition(
            (int)tileMap.getx(), (int)tileMap.gety());
        explosions.get(i).draw(g);
    }

    // draw hud
    hud.draw(g);

      ActionListener actListner = new ActionListener() {              
          public void actionPerformed(ActionEvent event) {               
             cnt += 1;               
             g.drawString("Counter = "+cnt, 120, 120);               
          }              
      };         
       Timer timer = new Timer(1000, actListner);            
       timer.start();   
}

public void keyPressed(int k) {
    if(k == KeyEvent.VK_LEFT) player.setLeft(true);
    if(k == KeyEvent.VK_RIGHT) player.setRight(true);
    if(k == KeyEvent.VK_UP) player.setUp(true);
    if(k == KeyEvent.VK_DOWN) player.setDown(true);
    if(k == KeyEvent.VK_W) player.setJumping(true);
    if(k == KeyEvent.VK_E) player.setGliding(true);
    if(k == KeyEvent.VK_R) player.setScratching();
    if(k == KeyEvent.VK_F) player.setFiring();
}

public void keyReleased(int k) {
    if(k == KeyEvent.VK_LEFT) player.setLeft(false);
    if(k == KeyEvent.VK_RIGHT) player.setRight(false);
    if(k == KeyEvent.VK_UP) player.setUp(false);
    if(k == KeyEvent.VK_DOWN) player.setDown(false);
    if(k == KeyEvent.VK_W) player.setJumping(false);
    if(k == KeyEvent.VK_E) player.setGliding(false);
}

}
有人能帮我吗?我就是不能让它停止刷新,它也不会删除毫秒

先谢谢你

附言

我感觉第一秒跑得比其他的慢


p.p.S.:我已经研究了如何实现计时器,但这些都不起作用,我在一个不返回错误的网站上发现了这个计时器。

您每次都在更新计时器Level1State.Drawg;被称为。我猜这是令人耳目一新的。我没有看到在代码中你会注意到毫秒的位置,以及为什么它是一个问题。你能澄清一下删除毫秒是什么意思吗?例如:它在我的屏幕上显示了以下内容。15196=15秒。14206=14秒等等。我想去掉最后两个数字。我看到了我是如何画那根线的,所以每次它都会循环使用,但我不知道如何改变它。这就是我所需要的:一个计时器,它会向上计数,并在某一点停止。我知道如何做到这一点,你需要做的是一个正常的计时器,使用g.drawString将它显示在屏幕上,我找不到任何地方如何。
          ActionListener actListner = new ActionListener()    {           
          public void actionPerformed(ActionEvent event) {               
             cnt += 1;               
             g.drawString("Counter = "+cnt, 120, 120);               
          }              
      };         
       Timer timer = new Timer(1000, actListner);            
       timer.start();