私はビデオ録画用のアプリケーションを作成しており、ビデオプレビューにラベルtxtStatus
とtxtTime
をオーバーレイしました。GUIを更新するためのタイマーの使用:なぜ機能しないのですか?
カメラボタンは、定期的にUpdateGUI
メソッドを呼び出すタイマーを開始/停止します。デバッグの実行私はタイマが動作しているのを見ることができます - 毎秒updateGUI
メソッドを呼び出しますが、メソッドはコントロールを更新しません。
この問題を解決する方法についてヒントを得ることができたら本当に感謝します。ここで
はコードです:
これは、タイマーを起動する方法です。
private void startTimer()
{
updateTimer = new Timer("TimerUpdate");
updateTimer.scheduleAtFixedRate(new TimerTask(){
public void run(){
settings.IncreaseRecordingTime();
updateGUI();
}
}, 0, 1000);
}
これはupdateGUI方法である:
private void updateGUI()
{
setStatusLabel();
String strTime = settings.GetTimerString(); //strTime changes every second (it works as expected)
txtTimer.setText(strTime);//the text doesn't change!
}
そして、これはと呼ばれる方法であり、ボタンを押したとき:
private boolean onCaptureButton()
{
settings.CaptureAction();
videoPreview.setFrameCallback(settings);
updateGUI();//here the function updateGUI() works as expected - it changes the txtStatus text from "Preview" to "Recording"
setTimer();
return false;
}
また、onCaptureButton()
メソッドで呼び出されたときにupdateGUI()
が動作し、タイマーメソッド内で呼び出されたときに機能しない理由を知らないと、いくつかのコメントを追加しました。
私はtxtTimer.refreshDrawableState()を使用しようとしました。それは動作しません。 –