Este artigo descreve a implementação das funções de monitoramento de progresso dos componentes do Java Swing. Compartilhe -o para sua referência, como segue:
Exemplo 1:
importar java.awt.event.actionEvent; importar java.awt.event.actionListener; importar javax.swing.progressmonitor; importar javax.swing.timer; classe pública testprogressmonitor {timer timer; public void init () {final SimululTargetMi Target = new SimululTargetMi (1000); // Execute uma tarefa que consome tempo iniciando um thread Final TargetThread = new Thread (Target); TargetThread.start (); // Crie uma caixa de diálogo Progresso ProgressMonitor Dialog = New ProgressMonitor (NULL, "Aguardando a conclusão da tarefa, não feche a janela antes que a tarefa seja concluída; caso contrário, a operação atual será cancelada ...", "Concluída: 0,00%", 0, Target.getamount ()); // crie um timer timer = new Timer (300, new ActionListener () {public void ActionPerformed (ActionEvent e) {// Defina a taxa de conclusão da caixa de diálogo de progresso com a quantidade de conclusão atual da caixa de diálogo da tarefa: "Target.Terget. a caixa de diálogo Progresso se (dialog.isceled ()) {// Pare o timer.Stop (); timer.start (); } public static void main (string [] args) {new testProgressMonitor (). init (); }} // simular uma classe de tarefas demorada no tempo SimululTargetMi implementa Runnable {// A conclusão atual da tarefa Private Volatile Int Current; // Volume total de tarefas Private Int Valor; public simuledTargetMi (INT valor) {current = 0; this.amount = valor; } public int getamount () {retorna valor; } public int getCurrent () {return atual; } // O método de execução representa o processo de concluir continuamente as tarefas public void run () {while (atual <valor) {try {thread.sleep (50); } catch (interruptedException e) {} current ++; }} public string getPercent () {return string.format ("%. 2f", 100.0 * atual / valor) + "%"; }}Efeito de corrida:
Exemplo 2:
importar java.awt.flowlayout; importar java.awt.font; importar java.awt.event.actionEvent; importar java.awt.event.actionListener; importar java.windowevent.windowadapter; import java.awt.event.windowevent; javax.swing.jframe; importar javax.swing.jlabel; importar javax.swing.jpanel; importar javax.swing.jprogressbar; importar javax.swing.timer; classe pública TestJProgressBar {JFrame Frame = new JFrame ("www.vevb.com - indicação atual de progresso ..."); // Crie uma barra de progresso vertical JProgressBar BAR = new JProgressBar (JProgressBar.horizontal); Jlabel tiplabel = new jlabel ("tip:", jlabel.left); Jlabel ContentLabel = new Jlabel ("Por favor, não feche a janela antes que a tarefa seja concluída; caso contrário, a operação atual será cancelada ...", Jlabel.left); Jlabel StatusLabel = new Jlabel ("", jlabel.center); public void init () {frame.setLayout (new FlowLayout ()); frame.setResizable (false); tiplabel.setFont (New Font ("Serif", font.plain, 14)); ContentLabel.setFont (New Font ("Serif", Font.Plain, 14)); statuslabel.setFont (New Font ("Serif", Font.Plain, 14)); Painel jpanel = new jpanel (); // FR5.SETBORDER (novo TitledBorder ("BoxLayout - Y")); painel.setLayout (new BoxLayout (painel, boxlayout.y_axis)); painel.add (tiplabel); painel.add (box.createVerticstut (2)); painel.add (contentlabel); painel.add (box.createVerticstut (7)); painel.add (bar); // painel.add (box.createverticGlue ()); painel.add (box.createVerticstut (2)); painel.add (statuslabel); frame.add (painel, 0); Final SimulLetTarget Target = new SimululTarget (1000); // executa uma tarefa demorada iniciando um thread thread thread thread = novo thread (destino); thread.start (); // Defina a porcentagem de conclusão do desenho na barra de barra de progresso. // bar.setPreferredSize (nova dimensão (100, 18)); // Defina os valores máximos e mínimos da barra de progresso, bar.setminimum (0); // Use a tarefa total como o valor máximo da barra de progresso. Timer do Timer final = novo Timer (300, new ActionListener () {public void ActionPerformed (ActionEvent E) {// Defina o valor da barra de progresso com a quantidade de conclusão atual da barra de barra de tarefas. }}}); 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 (); // sistema de saída do sistema.Exit (0);}}); // Este código define o tamanho da janela de acordo com os componentes colocados para que possa acomodar todos os componentes que você colocou Frame.pack (); frame.setVisible (true); } public static void main (string [] args) {new testJProgressBar (). init (); }} // simular uma classe de tarefas demorada no tempo SimululTarget implementa Runnable {// A quantidade de conclusão atual da tarefa Private Volatile Int Current; // Volume total de tarefas Private Int Valor; public simulousTarget (Int valor) {current = 0; this.amount = valor; } public int getamount () {retorna valor; } public int getCurrent () {return atual; } // O método de execução representa o processo de concluir continuamente as tarefas public void run () {while (atual <valor) {try {thread.sleep (20); } catch (interruptedException e) {} current ++; }} public string getPercent () {return string.format ("%. 1f", 100.0 * atual / valor) + "%"; }}Resultados em execução:
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.