2016-06-19 15 views
1

私は簡単なデジタル時計を作っています。私は、プログラムが実行されるときにちらつきを取り除きたい。私は別の睡眠時間を試みたが、それは助けにはならない。デジタル時計のプログラム(java)からフリッカーを減らすにはどうすればよいですか?

public class DigitalClock extends Applet implements Runnable{ 

Thread t=null; 
int hrs=0, min=0, sec=0; 
String tString=""; 
public DigitalClock(){ 
    //TODO add required code 
    init(); 
} 

public void init() { 
    // TODO Auto-generated method stub 
    setBackground(Color.BLACK); 
} 

public void start(){ 
    t=new Thread(this); 
    t.start(); 
} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    DigitalClock dc=new DigitalClock(); 
    JFrame f=new JFrame("Digital Clock"); 
    f.setSize(300, 300); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.add(dc); 
    dc.start(); 
    f.setVisible(true); 
} 

@Override 
public void run() { 
    // TODO Auto-generated method stub 
    try { 
     while(true){ 
      Calendar cal=Calendar.getInstance(); 
      hrs=cal.get(Calendar.HOUR_OF_DAY); 
      min=cal.get(Calendar.MINUTE); 
      sec=cal.get(Calendar.SECOND); 
      tString=hrs+":"+min+":"+sec; 
      repaint(); 
      Thread.sleep(40); 
     } 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 
} 
public void paint(Graphics g){ 
    g.setColor(Color.white); 
    g.drawString(tString, 50, 50); 
} 

}

どのように私はpaintComponentメソッドを使用します。フリッカーを減らすのに役立ちますか?

+1

なぜ1秒間に25回塗り替える必要がありますか? –

+0

私は同じアプリでストップウォッチとタイマーを追加したいと思います。だから私はどのように私は同じ間隔を維持しながらちらつきを減らすことができます。 –

+0

1)なぜアプレットをコーディングするのですか?教師がそれを指定している場合は、[CS教師が** Javaアプレットを教えるのを止めるべき理由](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-teaching-java-applets /)を使用します。 2)[Java Plugin support deprecated](http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/)および[Plugin-Free Webへの移動]を参照してください( https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free)。 .. –

答えて

0

ではなく、あなたの睡眠ループのjavax.swing.Timerを使用して、再描画間隔に

package clock; 

import java.applet.Applet; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Calendar; 

import javax.swing.*; 

public class Clock extends Applet implements ActionListener{ 

Thread t=null; 
int hrs=0, min=0, sec=0; 
String tString=""; 
public Clock(){ 
    //TODO add required code 
    init(); 
} 

public void init() { 
    // TODO Auto-generated method stub 
    setBackground(Color.BLACK); 
} 

public void start(){ 
    Timer t = new Timer(1000, this); 
    t.start(); 
} 


public void paint(Graphics g){ 
    super.paint(g); 
    g.setColor(Color.white); 
    g.drawString(tString, 50, 50); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    Calendar cal=Calendar.getInstance(); 
    hrs=cal.get(Calendar.HOUR_OF_DAY); 
    min=cal.get(Calendar.MINUTE); 
    sec=cal.get(Calendar.SECOND); 
    tString=hrs+":"+min+":"+sec; 
    repaint(); 
} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Clock dc=new Clock(); 
    JFrame f=new JFrame("Digital Clock"); 
    f.setSize(300, 300); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.add(dc); 
    dc.start(); 
    f.setVisible(true); 
} 


} 
1

を増やしてみてください。

関連する問題