تصف هذه المقالة تنفيذ وظائف مراقبة التقدم لمكونات أرجوحة Java. شاركه للرجوع إليه ، على النحو التالي:
مثال 1:
استيراد java.awt.event.actionevent ؛ استيراد java.awt.event.ActionListener ؛ import javax.swing.progressMonitor ؛ import javax.swing.timer ؛ public testprogressMonitor {timer timer ؛ public void init () {Final SimulatedTargetMi Target = new SimulatedTargetMi (1000) ؛ // تنفيذ مهمة تستغرق وقتًا طويلاً عن طريق بدء تشغيل ThreadTherThread TargetTherTher = موضوع جديد (Target) ؛ TargetThread.start () ؛ // قم بإنشاء مربع حوار Progress Final ProgressMonitor = New ProgressMonitor (NULL ، "في انتظار إكمال المهمة ، يرجى عدم إغلاق النافذة قبل اكتمال المهمة ، وإلا سيتم إلغاء العملية الحالية ..." ، "مكتمل: 0.00 ٪" ، 0 ، Target.getAmount ()) ؛ . مربع الحوار if (dialog.iscanceled () {// إيقاف المؤقت. Timer.Start () ؛ } public static void main (string [] args) {new TestProgressMonitor (). init () ؛ }} // محاكاة فئة المهام التي تستغرق وقتًا تستغرق وقتًا طويلاً تنفذ Runnable {// الانتهاء الحالي للمهمة الخاصة بالمتقلبة المتطايرة ؛ // إجمالي حجم المهمة المبلغ الخاص Public SimulatedTargetMi (int come) {current = 0 ؛ this.amount = المبلغ ؛ } public int getAmount () {return cheor ؛ } public int getCurrent () {return current ؛ } // تمثل طريقة التشغيل عملية إكمال المهام بشكل مستمر Run () {بينما (Current <come) {try {thread.sleep (50) ؛ } catch (interruptedException e) {} current ++ ؛ }} السلسلة العامة getPercent () {return string.format ("٪. 2f" ، 100.0 * current / main) + "٪" ؛ }}تأثير الجري:
مثال 2:
استيراد java.awt.flowlayout ؛ استيراد java.awt.font ؛ استيراد java.awt.event. javax.swing.jframe ؛ import javax.swing.jlabel ؛ import javax.swing.jpanel ؛ import javax.swing.jprogressbar ؛ import javax.swing.timer ؛ الفئة العامة testjprogressbar {jframe frame = new JFrame ("www.vevb.com - مؤشر التقدم الحالي ...") ؛ // إنشاء شريط تقدم عمودي JprogressBar = New JProgressBar (JProgressBar.Horizontal) ؛ Jlabel Tiplabel = New Jlabel ("TIP:" ، Jlabel.left) ؛ JLabel ContentLabel = New JLabel ("من فضلك لا تغلق النافذة قبل اكتمال المهمة ، وإلا سيتم إلغاء العملية الحالية ..." ، jlabel.left) ؛ JLabel statusLabel = New JLabel ("" ، Jlabel.Center) ؛ public void init () {frame.setLayout (new FlowLayout ()) ؛ frame.setResiby (false) ؛ Tiplabel.setfont (خط جديد ("serif" ، font.plain ، 14)) ؛ contentLabel.setfont (خط جديد ("serif" ، font.plain ، 14)) ؛ statuslabel.setfont (خط جديد ("serif" ، font.plain ، 14)) ؛ JPanel Panel = New JPanel () ؛ // fr5.setBorder (new tabledborder ("boxlayout - y")) ؛ Panel.setLayout (New BoxLayout (لوحة ، boxlayout.y_axis)) ؛ Pane.add (Tiplabel) ؛ panel.add (box.createverticalstrut (2)) ؛ Panel.add (contentLabel) ؛ panel.add (box.createverticalstrut (7)) ؛ Pane.add (bar) ؛ // panel.add (box.createverticalglue ()) ؛ panel.add (box.createverticalstrut (2)) ؛ Pane.add (statusLabel) ؛ frame.add (لوحة ، 0) ؛ Final SimulatedTarget Target = New SimulatedTarget (1000) ؛ // تنفيذ مهمة تستغرق وقتًا طويلاً عن طريق بدء تشغيل مؤشر ترابط مؤشر ترابط مؤشر ترابط نهائي = مؤشر ترابط جديد (Target) ؛ thread.start () ؛ // حدد النسبة المئوية لإكمال الرسم في شريط شريط التقدم // bar.setPreferredSize (Dimension New (100 ، 18)) ؛ // قم بتعيين القيم القصوى والحد الأدنى لشريط التقدم ، bar.setMinimum (0) ؛ // استخدم المهمة الكلية كقيمة الحد الأقصى لشريط شريط التقدم. Timer Timer Final = New Timer (300 ، New ActionListener () {public void actionperformed (ActionEvent e) {// قم بتعيين قيمة شريط التقدم مع مبلغ الانتهاء الحالي من Bar Bar.setValue (target.getcetrent ()) ؛ if (target.getAmount () <= target.getcurrent () }}}) ؛ Timer.Start () ؛ frame.setLocationRelativeto (NULL) ؛ frame.setDefaultCloseOperation (jframe.dispose_on_close) ؛ // frame.setDefaultCloseOperation (jframe.exit_on_close) ؛ frame.addwindowlistener (new windowadapter () {Override public void windowclosing (windowevent e) {thread.interrupt () ؛ timer.stop () ؛ // system exit system.exit (0) ؛}}) ؛ // يعين هذا الرمز حجم النافذة وفقًا للمكونات الموضوعة بحيث يمكنه استيعاب جميع المكونات التي وضعتها Frame.Pack () ؛ frame.setVisible (صحيح) ؛ } public static void main (string [] args) {new testJprogressBar (). init () ؛ }} // محاكاة فئة المهام التي تستغرق وقتًا تستغرق وقتًا طويلاً ، تنفذ Runnable {// مبلغ الإكمال الحالي للمهمة الخاصة المتطايرة الحالية ؛ // إجمالي حجم المهمة المبلغ الخاص public simulatedTarget (int come) {current = 0 ؛ this.amount = المبلغ ؛ } public int getAmount () {return cheor ؛ } public int getCurrent () {return current ؛ } // تمثل طريقة التشغيل عملية إكمال المهام بشكل مستمر Run () {بينما (Current <come) {try {thread.sleep (20) ؛ } catch (interruptedException e) {} current ++ ؛ }} السلسلة العامة getPercent () {return string.format ("٪. 1f" ، 100.0 * current / main) + "٪" ؛ }}نتائج التشغيل:
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.