Java 使图形2D文本延迟闪烁

Java 使图形2D文本延迟闪烁,java,timer,graphics2d,Java,Timer,Graphics2d,我有一个draw方法,使用Graphics2D对象在屏幕上绘制字符串。我在draw方法中设置了一个if语句,使文本每秒绘制一次(闪烁效果),但文本将绘制一秒钟,然后不再只绘制一帧,而是继续绘制。我想让它画一秒钟,然后不画一秒钟,以此类推 以下是方法- long elapsed = (System.nanoTime() - blinkTimer) / 1000000; if(elapsed < 1000){ // g.drawString("",x,y); Draw

我有一个draw方法,使用Graphics2D对象在屏幕上绘制字符串。我在draw方法中设置了一个if语句,使文本每秒绘制一次(闪烁效果),但文本将绘制一秒钟,然后不再只绘制一帧,而是继续绘制。我想让它画一秒钟,然后不画一秒钟,以此类推

以下是方法-

long elapsed = (System.nanoTime() - blinkTimer) / 1000000;
    if(elapsed < 1000){
        // g.drawString("",x,y); Draw String Here
    }else{
        blinkTimer = System.nanoTime();
    }
长时间运行=(System.nanoTime()-blinkTimer)/1000000;
如果(经过时间<1000){
//g.抽绳(“”,x,y);在这里抽绳
}否则{
blinkTimer=System.nanoTime();
}
blinkTimer在构造函数中初始化为
System.nanoTime()


我希望在不使用Java定时器对象的情况下完成这项工作。提前谢谢

添加了一个额外的计时器-

long elapsed = (System.nanoTime() - blinkTimer) / 1000000;
    if(elapsed < 1000){
        //g.drawString("",x,y); Draw String Here
        breakTimer = System.nanoTime();
    }

    long breakElapsed = (System.nanoTime() - breakTimer) / 1000000;
    if(breakElapsed > 500){
        blinkTimer = System.nanoTime();
    }
长时间运行=(System.nanoTime()-blinkTimer)/1000000;
如果(经过时间<1000){
//g、 抽绳(“”,x,y);在此处抽绳
breakTimer=System.nanoTime();
}
长时间中断时间=(System.nanoTime()-breakTimer)/1000000;
如果(断开时间>500){
blinkTimer=System.nanoTime();
}

为什么要在不使用Timer类的情况下执行此操作?这是可能的,但您当前的问题是,您需要第二个计时器用于颜色反转持续时间。@ElliottFrisch我自己的计时器增加了灵活性,是吗?我没看到它,在哪里?@ElliotFrisch我删除了它,以便为试图理解我的问题的人创建更可读的代码。