Java 在applet中实现计时器?

Java 在applet中实现计时器?,java,timer,applet,Java,Timer,Applet,有人能帮一个新手在游戏中设置计时器吗P 在过去的一两天里,我一直在尝试各种各样的方法,但我仍然无法让它发挥作用。这里有人有解决办法吗 基本上,我有一个游戏的目标是收集6的项目在最快的时间。因此,我当然想要一个计时器显示,从0开始计数,用户可以跟踪他是如何进行的 以下是相关课程的框架- public class StartingPoint extends Applet implements Runnable{ Task t = new Task(); Menu menu = ne

有人能帮一个新手在游戏中设置计时器吗P 在过去的一两天里,我一直在尝试各种各样的方法,但我仍然无法让它发挥作用。这里有人有解决办法吗

基本上,我有一个游戏的目标是收集6的项目在最快的时间。因此,我当然想要一个计时器显示,从0开始计数,用户可以跟踪他是如何进行的

以下是相关课程的框架-

public class StartingPoint extends Applet implements Runnable{

    Task t = new Task();
    Menu menu = new Menu();
    int num;
    public static enum STATE{
        MENU, 
        GAME,
    }; 

    public static STATE State = STATE.MENU;

    public void init() {
        setSize(800, 600);
    }

    public void start() {

        if(num < 2){
            Thread thread = new Thread(this);
            thread.start();
            num++;
        }
    }

    public void run() {

        if (State == STATE.GAME) {
            while (true) {
                repaint();

                try {
                    Thread.sleep(17);
                    } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        } else if (State == STATE.MENU) {

            while (true) {
                repaint();
                try {
                    Thread.sleep(17);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    public void paint(Graphics g) {

        if (State == STATE.GAME) {

            ball.paint(g);

        } else if (State == STATE.MENU) {
            menu.render(g);
        }
    }
}



public class Task extends TimerTask {
    int seconds;
    int minutes;
    public String time;

    public void run() {

        seconds++;

        if (seconds == 60) {
            seconds = 0;
            minutes++;
        }

        String s = String.valueOf(seconds);
        String m = String.valueOf(minutes);

        if (seconds < 10) {
            time = (m + ":0" + s);
        } else {
            time = (m + ":" + s);
        }
    }
}



public class Start {

    private static Timer ourClock;
    private static TimerTask ourTask;

    public static void update(){
        ourClock = new Timer();
        ourTask = new Task();
        ourClock.scheduleAtFixedRate(ourTask,1000,1000);
    }
 }

我认为你从错误的角度看待这个问题

在Java中,可以在现有类中创建内部类。这将允许实例化类与其父类进行对话

实际上,根据我有限的经验,这是在Java中使用计时器的标准

public class Start {

    private static Timer ourClock;
    public static String time;


    public static void update(){
        ourClock = new Timer();
        ourClock.scheduleAtFixedRate(new TimerTask(){
            public void run() {
            int seconds;
            int minutes;

            seconds++;

            if (seconds == 60) {
                seconds = 0;
                minutes++;
            }

            String s = String.valueOf(seconds);
            String m = String.valueOf(minutes);

            if (seconds < 10) {
                time = (m + ":0" + s);
                } else {
                time = (m + ":" + s);
            }
        },1000,1000);
    }
 }
你可以找到一些很好的例子@

虽然这个问题有点像其他问题的重复,但我认为它更像是一个Java拥有其他语言不具备的透视图或范例的问题。通常,内部类或嵌套类的使用在当今的Java中非常常见。然而,它是命中或错过与C++和C。在某些情况下,它被认为是真正的坏实践PHP,和其他人只是不允许Objul-C.<
话虽如此,仅仅因为一个人不喜欢它并不意味着它不应该被使用,只是你应该回顾一下为什么要使用它,以及它如何适应你的环境。

我可以问一下为什么它是一个Applet而不是JApplet吗?甚至Swing现在也在退出JavaFX8的情况下下线了。AWT已经死了很长时间,人们甚至不能说它是在渴望峡湾。我从Youtube上的Mybringback学到了Java的基础知识。这个游戏基于他在教程中制作的游戏。出于某种原因,他使用了Applet。我不知道为什么。这段视频是2012年制作的,但顺便说一句,它听起来像是Applet已经过时了??对于我的第二场比赛,我肯定会使用JApplet。现在回去玩这场比赛已经太晚了,我已经快玩完了。除非转换很容易?那么你已经组合了开始类和任务类?这很酷,我学到了一些东西,但是现在我该如何在我的小程序上绘制计时器呢?g、 drawStringtime,300300;似乎不起作用,我只是遇到了错误。您应该能够在绘图代码中使用start.time来检索字符串。[Bah Enter提交]。这可以成为一个深入的对话,因为执行代码和渲染代码是分开的。您使用渲染代码访问执行代码背后的数据方法。我将使用什么代码来分隔执行代码和渲染代码?你能帮我写一下吗?对不起,我是新来的,所以我不知道我对你有多高的要求。如果我问得太多,别担心。你说的话并不是太多,但不幸的是,我现在无法快速回答。如果到今天晚上我的时间还没有更好的答案,我会试着做点什么。
public class Start {

    private static Timer ourClock;
    public static String time;


    public static void update(){
        ourClock = new Timer();
        ourClock.scheduleAtFixedRate(new TimerTask(){
            public void run() {
            int seconds;
            int minutes;

            seconds++;

            if (seconds == 60) {
                seconds = 0;
                minutes++;
            }

            String s = String.valueOf(seconds);
            String m = String.valueOf(minutes);

            if (seconds < 10) {
                time = (m + ":0" + s);
                } else {
                time = (m + ":" + s);
            }
        },1000,1000);
    }
 }