لماذا يعطي دائما نفس الوقت?
-
27-10-2019 - |
سؤال
لقد استخدمت البرنامج التالي للحصول على مدار الساعة.ما اتضح أن يكون هو ساعة ثابتة ?لماذا هو كذلك ?
import java.util.*;
import java.awt.*;
import javax.swing.*;
class tester {
JFrame fr = new JFrame();
JPanel p = new JPanel();
JLabel l = new JLabel();
Date d = new Date();
GregorianCalendar gc = new GregorianCalendar();
tester() {
p.setBackground(Color.red);
l.setVisible(true);
p.add(l);
fr.add(p);
fr.setSize(200,200);
fr.setVisible(true);
startClockThread();
}
public void startClockThread() {
Runnable r = new Runnable() {
@Override
public void run() {
startClock();
}
};
new Thread(r).start();
}
public void startClock() {
l.setVisible(true);
while(true) {
l.setText(gc.get(gc.HOUR) + ":" + gc.get(gc.MINUTE) + ":" + gc.get(gc.SECOND));
System.out.println(gc.get(gc.SECOND));
}
}
public static void main(String args[]) {
new tester();
}
}
المحلول
GregorianCalendar()
يبني التقويم الميلادي الافتراضي باستخدام الوقت الحالي في المنطقة الزمنية الافتراضية مع الإعدادات المحلية الافتراضية. جافا دوك
يمكنك أن تفعل بهذه الطريقة.
while(true) {
GregorianCalendar gc = new GregorianCalendar();
l.setText(gc.get(gc.HOUR) + ":" + gc.get(gc.MINUTE) + ":" + gc.get(gc.SECOND));
}
الآن يجب أن نفهم لماذا كنت تحصل على ساعة ثابتة !
نصائح أخرى
إنك تقوم بإنشاء التقويم الميلادي مرة واحدة فقط ، ولن يتم تحديثه أبدًا.لذا فإن التاريخ هو نفسه دائمًا.
هناك مشاكل كبيرة بخلاف تلك التي لاحظتها:
- لا تدع الخيوط تتدفق ، ستجمد واجهة المستخدم في النهاية
- يجب أن يحدث كل وصول إلى أحد مكونات التأرجح في بتوقيت شرق الولايات المتحدة
يمكنك حل كلا الأمرين بسهولة باستخدام javax.swing.Timer
Genacodicetagpreلا تنتمي إلى StackOverflow