Artikel ini menjelaskan implementasi fungsi pemantauan kemajuan komponen ayunan Java. Bagikan untuk referensi Anda, sebagai berikut:
Contoh 1:
Impor java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.progressmonitor; impor javax.swing.timer; kelas publik testprogressmonitor {timer timer; public void init () {final SimulatedTargetMI target = new SimulatedTargetMi (1000); // Jalankan tugas yang memakan waktu dengan memulai utas utas final targetThread = utas baru (target); targetThread.start (); // Buat dialog dialog Progress ProgressMonitor Final = New ProgressMonitor (NULL, "menunggu tugas selesai, tolong jangan menutup jendela sebelum tugas selesai, jika tidak operasi saat ini akan dibatalkan ...", "selesai: 0,00%", 0, target.getamount ()); // Buat timer timer = timer baru (300, ActionListener () {public void actionPerformed (actionEvent e) {// Tetapkan rasio penyelesaian dialog progres dengan jumlah penyelesaian saat ini dari dialog dialog. kotak dialog jika dialog.iscanceled ()) {// Hentikan timer timer.stop (); timer.start (); } public static void main (string [] args) {new testProgressMonitor (). init (); }} // Simulasikan kelas tugas yang memakan waktu SimulatedTargetMI mengimplementasikan runnable {// saat ini penyelesaian dari tugas intratile private volatile intratile; // Total volume tugas jumlah int pribadi; public SimulatedTargetMi (jumlah int) {current = 0; this.amount = jumlah; } public int getamount () {jumlah pengembalian; } public int getCurrent () {return current; } // Metode run mewakili proses tugas yang terus -menerus menyelesaikan tugas public run () {while (saat ini <jumlah) {coba {thread.sleep (50); } catch (InterruptedException e) {} arus ++; }} public String getPercent () {return string.format ("%. 2f", 100.0 * saat ini / jumlah) + "%"; }}Efek Menjalankan:
Contoh 2:
impor java.awt.flowlayout; import java.awt.font; import java.awt.event.actionevent; impor java.awt.event.actionlistener; import java.awt.event.windowapter; import java.awt.event.windowevent; impor javax. javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jprogressbar; import javax.swing.timer; Public Class TestJProgressBar {jFrame frame = new jframe ("www.vevb.com - indikasi kemajuan saat ini ..."); // Buat bilah progres vertikal jprogressbar bar = jprogressbar baru (jprogressbar.horizontal); Jlabel Tiplabel = JLabel baru ("Tip:", jlabel.Left); Jlabel contentLabel = new jlabel ("Tolong jangan tutup jendela sebelum tugas selesai, jika tidak operasi saat ini akan dibatalkan ...", jlabel.left); Jlabel StatusLabel = JLabel baru ("", jlabel.center); public void init () {frame.setLayout (new flowlayout ()); frame.setresizable (false); TipLabel.SetFont (font baru ("Serif", Font.Plain, 14)); contentLabel.setfont (font baru ("serif", font.plain, 14)); statusLabel.setfont (font baru ("serif", font.plain, 14)); Jpanel panel = jpanel baru (); // fr5.setBorder (judul baru ("boxlayout - y")); panel.setLayout (boxlayout baru (panel, boxlayout.y_axis)); Panel.Add (Tiplabel); Panel.add (box.createVerticalstrut (2)); Panel.Add (ContentLabel); panel.add (box.createVerticalstrut (7)); panel.add (bar); // Panel.add (box.createverticalglue ()); Panel.add (box.createVerticalstrut (2)); Panel.Add (StatusLabel); frame.add (panel, 0); final simulatedTarget target = new SimulatedTarget (1000); // Jalankan tugas yang memakan waktu dengan memulai utas final utas utas = utas baru (target); thread.start (); // Atur persentase penyelesaian menggambar di bar progress bar. // bar.setPreferredSize (dimensi baru (100, 18)); // Atur nilai maksimum dan minimum dari bilah kemajuan, bar.setMinimum (0); // Gunakan tugas total sebagai nilai maksimum dari bilah progress batang.setMaximum (target.getamount ()); Timer final timer = timer baru (300, actionListener () {public void actionPerformed (actionEvent e) {// Tetapkan nilai bilah progress batang dengan jumlah penyelesaian saat ini dari bar batang batang batang.setValue (target. }}}); timer.start (); frame.setLocationRelativeto (null); frame.setDefaultCloseOperation (jframe.dispose_on_close); // frame.setDefaultCloseOperation (jframe.exit_on_close); frame.addwindowlistener (windowAdapter baru () {@Override public void windowclosing (windowevent e) {thread.interrupt (); timer.stop (); // sistem keluar sistem.exit (0);}}); // Kode ini mengatur ukuran jendela sesuai dengan komponen yang ditempatkan sehingga dapat mengakomodasi semua komponen yang Anda tempatkan bingkai.pack (); frame.setVisible (true); } public static void main (string [] args) {new testjprogressbar (). init (); }} // Simulasikan kelas tugas yang memakan waktu SimulasiTarget mengimplementasikan Runnable {// Jumlah penyelesaian saat ini dari tugas intratile private volatile saat ini; // Total volume tugas jumlah int pribadi; public SimulatedTarget (jumlah int) {current = 0; this.amount = jumlah; } public int getamount () {jumlah pengembalian; } public int getCurrent () {return current; } // Metode run mewakili proses tugas -tugas yang terus -menerus melengkapi public void run () {while (saat ini <jumlah) {coba {thread.sleep (20); } catch (InterruptedException e) {} arus ++; }} public String getPerCent () {return string.format ("%. 1f", 100.0 * saat ini / jumlah) + "%"; }}Hasil Menjalankan:
Untuk informasi lebih lanjut tentang algoritma java, pembaca yang tertarik dengan situs ini dapat melihat topik: "struktur data java dan tutorial algoritma", "ringkasan tips node dom java", "ringkasan file operasi java dan direktori" dan "ringkasan tip operasi java cache" tips java "tips java" Tips "Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.