Este artículo describe la implementación de las funciones de monitoreo de progreso de los componentes de Java Swing. Compártelo para su referencia, como sigue:
Ejemplo 1:
import java.awt.event.actionEvent; import java.awt.event.actionListener; import javax.swing.progressmonitor; import javax.swing.timer; public class testProgressMonitor {temporizador de temporizador; public void init () {final simulatedTargetMi Target = new SimulatedTargetMi (1000); // Ejecutar una tarea de consumo de tiempo iniciando un subproceso de hilo final TargetThread = New Thread (Target); TargetThread.Start (); // Crear un cuadro de diálogo de progreso Diálogo demonitor de progreso final = nuevo ProgressMonitor (NULL, "Esperando que la tarea se complete, no cierre la ventana antes de que se complete la tarea, de lo contrario, la operación actual se cancelará ...", "Completado: 0.00%", 0, Target.getamount ()); // Crear un temporizador Timer = New Timer (300, New ActionListener () {public void ActionPerformed (ActionEvent e) {// Establezca la relación de finalización del cuadro de diálogo de progreso con el monto de finalización actual del diálogo de diálogo de tarea.setProgress (target.getCurrent ()); dialoG.setNote ("completado:" ATTA.GEGGERPERCENCE (); // if el usuario de los tancos "Tancar el botón" Cancar el botón "Cancar el" Tancel de Tancel "Cancar el" Tancel de Tancele ". cuadro de diálogo if (dialog.iscanceled ()) {// Detener el temporizador Timer.stop (); timer.start (); } public static void main (string [] args) {new testProgressMonitor (). init (); }} // Simule una clase de tareas de consumo de tiempo simulada TargetMi implementos runnables {// La finalización actual de la tarea private volátil int corriendo; // Volumen total de tareas Private int Manting; public SimulatedTargetMi (intert) {actual = 0; this.amount = cantidad; } public int getamount () {cantidad de retorno; } public int getCurrent () {return corriente; } // El método de ejecución representa el proceso de completar continuamente las tareas public void run () {while (actual <monta } capt (interruptedException e) {} current ++; }} public String getPerment () {return String.Format ("%. 2f", 100.0 * actual / cantidad) + "%"; }}Efecto de ejecución:
Ejemplo 2:
import java.awt.flowlayout; import java.awt.font; import java.awt.event.ActionEvent; import java.awt.event.actionListener; import java.awt.event.windowAdapter; import java.awt.event.windowevent; import javax.swing.box; importación de importación; importación; importación; importación; importación; javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jprogressbar; import javax.swing.timer; clase pública TestjProgressBar {Jframe frame = new Jframe ("www.vevb.com - Indicación de progreso actual ..."); // Crear una barra de progreso vertical JProgressbar Bar = new JProgressBar (JProgressBar.Horizontal); Jlabel tipLabel = new JLabel ("TIP:", JLabel.left); JLabel ContentLabel = new JLabel ("Por favor, no cierre la ventana antes de que se complete la tarea, de lo contrario, la operación actual se cancelará ...", jlabel.left); Jlabel statusLabel = new JLabel ("" ", jlabel.center); public void init () {frame.setLayout (new FlowLayout ()); Frame.setResizable (falso); tipLabel.setFont (nueva fuente ("serif", font.plain, 14)); contentlabel.setFont (nueva fuente ("serif", font.plain, 14)); statuslabel.setFont (nueva fuente ("serif", font.plain, 14)); Panel jpanel = new JPanel (); // fr5.setBorderer (nuevo tituladoBorder ("boxLayout - y")); panel.setLayout (nuevo BoxLayout (panel, boxLayout.y_axis)); panel.add (TipLabel); panel.add (box.createEverticalstrut (2)); panel.add (contentLabel); panel.add (box.createEverticalstrut (7)); panel.add (bar); // panel.add (box.createEverticalGlue ()); panel.add (box.createEverticalstrut (2)); panel.add (statusLabel); Frame.add (panel, 0); Target final simulatedTarget = new SimulatedTarget (1000); // Ejecutar una tarea de consumo de tiempo iniciando un subproceso de hilo de hilo de hilo = nuevo hilo (target); Thread.Start (); // Establecer el porcentaje de finalización del dibujo en la barra de barra de progreso. // bar.setPreferedSize (nueva dimensión (100, 18)); // Establecer los valores máximos y mínimos de la barra de progreso, bar.setminimum (0); // use la tarea total como el valor máximo de la barra de progreso. Temporizador de temporizador final = new Timer (300, nuevo ActionListener () {public void ActionPerformed (ActionEvent e) {// Establezca el valor de la barra de la barra de progreso con el monto de finalización actual de la barra de la barra de tareas. }}}); timer.start (); Frame.SetLocationRelativeto (nulo); Frame.setDefaultCloseOperation (jframe.dispose_on_close); // frame.setDefaultCloseOperation (jframe.exit_on_close); Frame.addwindowlistener (nuevo WindowAdapter () {@Override public void WindowClosing (WindowsEvent E) {Thread.interrupt (); Timer.stop (); // System Exit System.Exit (0);}}); // Este código establece el tamaño de la ventana de acuerdo con los componentes colocados para que pueda acomodar todos los componentes que colocó frame.pack (); Frame.SetVisible (verdadero); } public static void main (string [] args) {new testjProgressBar (). init (); }} // Simule una clase de tareas de consumo de tiempo SimulatedTarget implementos runnables {// El monto de finalización actual de la tarea private volátil int corriendo; // Volumen total de tareas Private int Manting; public SimulatedTarget (int monta) {actual = 0; this.amount = cantidad; } public int getamount () {cantidad de retorno; } public int getCurrent () {return corriente; } // El método de ejecución representa el proceso de completar continuamente las tareas public void run () {while (actual <monta } capt (interruptedException e) {} current ++; }} public String getPORTENT () {return String.Format ("%. 1f", 100.0 * actual / cantidad) + "%"; }}Resultados de ejecución:
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.