Java进度条

Java进度条,java,swing,jtable,jprogressbar,tablecelleditor,Java,Swing,Jtable,Jprogressbar,Tablecelleditor,我正在使用JProgressBar显示进度。但是,如何将progressBar显示为从0加载到100?我从互联网上得到的代码和它的工作,除了progressBar没有加载 代码 progressFrame=newjframe();//显示进度条的框架 progressBar=新的JProgressBar(0100); progressBar.setValue(0); progressBar.SetStringPaint(真); progressFrame.add(progressBar); 新S

我正在使用JProgressBar显示进度。但是,如何将progressBar显示为从0加载到100?我从互联网上得到的代码和它的工作,除了progressBar没有加载

代码

progressFrame=newjframe();//显示进度条的框架
progressBar=新的JProgressBar(0100);
progressBar.setValue(0);
progressBar.SetStringPaint(真);
progressFrame.add(progressBar);
新SwingWorker()
{
受保护的Void doInBackground()引发SQLException,ClassNotFoundException
{
类forName(“oracle.jdbc.driver.OracleDriver”);
progressBar.setValue(0);
frame.setEnabled(false);//frame=主帧
//tableclass使用数据库中的数据创建JTable
tableclass=new TheDatabaseTable(deptName);//创建需要时间
progressBar.setValue(50);
frame.getContentPane().removeAll();
frame.setContentPane(tableclass);
frame.validate();
frame.repaint();
progressBar.setValue(100);
//progressFrame.dispose();
返回null;
}; 
受保护的void done()
{
//progressFrame.setVisible(false);
frame.setVisible(true);
progressFrame.dispose();
frame.setEnabled(true);
}
}.execute();

如果有人编辑以上代码工作,我将不胜感激。谢谢。

我喜欢来自互联网的代码……哦

您的代码违反了Swing的单线程规则,因此,这是一个糟糕的示例

使用
SwingWorker
,您有许多选项。您可以
发布
进度并使用
过程
方法更新进度条,或者可以使用
属性更改侦听器
并通过调用
SwingWorker
设置进度
方法来监视进度更改事件

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;

public class SwingWorkerProgress {

    public static void main(String[] args) {
        new SwingWorkerProgress();
    }

    public SwingWorkerProgress() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JProgressBar pbProgress;
        private JButton start;

        public TestPane() {

            setBorder(new EmptyBorder(10, 10, 10, 10));
            pbProgress = new JProgressBar();
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.insets = new Insets(4, 4, 4, 4);
            gbc.gridx = 0;
            gbc.gridy = 0;
            add(pbProgress, gbc);

            start = new JButton("Start");
            gbc.gridy++;
            add(start, gbc);

            start.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    start.setEnabled(false);
                    ProgressWorker pw = new ProgressWorker();
                    pw.addPropertyChangeListener(new PropertyChangeListener() {

                        @Override
                        public void propertyChange(PropertyChangeEvent evt) {
                            String name = evt.getPropertyName();
                            if (name.equals("progress")) {
                                int progress = (int) evt.getNewValue();
                                pbProgress.setValue(progress);
                                repaint();
                            } else if (name.equals("state")) {
                                SwingWorker.StateValue state = (SwingWorker.StateValue) evt.getNewValue();
                                switch (state) {
                                    case DONE:
                                        start.setEnabled(true);
                                        break;
                                }
                            }
                        }

                    });
                    pw.execute();
                }
            });

        }
    }

    public class ProgressWorker extends SwingWorker<Object, Object> {

        @Override
        protected Object doInBackground() throws Exception {
            int i = 0;
            int max = 2000;

            while (i < max) {
                i += 10;
                int progress = Math.round(((float)i / (float)max) * 100f);
                setProgress(progress);
                try {
                    Thread.sleep(25);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            return null;
        }
    }
}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.beans.PropertyChangeEvent;
导入java.beans.PropertyChangeListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JProgressBar;
导入javax.swing.SwingWorker;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
导入javax.swing.border.EmptyBorder;
公共类SwingWorkerProgress{
公共静态void main(字符串[]args){
新SwingWorkerProgress();
}
公共SwingWorkerProgress(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类TestPane扩展了JPanel{
私人JProgressBar项目进展;
私人按钮启动;
公共测试窗格(){
新订单(新的空订单(10,10,10,10));
pbProgress=新的JProgressBar();
setLayout(新的GridBagLayout());
GridBagConstraints gbc=新的GridBagConstraints();
gbc.插图=新插图(4,4,4,4);
gbc.gridx=0;
gbc.gridy=0;
添加(PBC进度,gbc);
开始=新的JButton(“开始”);
gbc.gridy++;
添加(开始,gbc);
start.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
start.setEnabled(false);
ProgressWorker pw=新的ProgressWorker();
addPropertyChangeListener(新的PropertyChangeListener(){
@凌驾
公共作废属性更改(属性更改事件evt){
字符串名称=evt.getPropertyName();
如果(名称等于(“进度”)){
int progress=(int)evt.getNewValue();
pbProgress.setValue(progress);
重新油漆();
}如果(名称等于(“状态”)){
SwingWorker.StateValue状态=(SwingWorker.StateValue)evt.getNewValue();
开关(状态){
案件完成:
start.setEnabled(true);
打破
}
}
}
});
execute();
}
});
}
}
公共类ProgressWorker扩展SwingWorker{
@凌驾
受保护对象doInBackground()引发异常{
int i=0;
int max=2000;
而(i
您必须使用线程。设计一个实现
Runnable的类import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;

public class SwingWorkerProgress {

    public static void main(String[] args) {
        new SwingWorkerProgress();
    }

    public SwingWorkerProgress() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JProgressBar pbProgress;
        private JButton start;

        public TestPane() {

            setBorder(new EmptyBorder(10, 10, 10, 10));
            pbProgress = new JProgressBar();
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.insets = new Insets(4, 4, 4, 4);
            gbc.gridx = 0;
            gbc.gridy = 0;
            add(pbProgress, gbc);

            start = new JButton("Start");
            gbc.gridy++;
            add(start, gbc);

            start.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    start.setEnabled(false);
                    ProgressWorker pw = new ProgressWorker();
                    pw.addPropertyChangeListener(new PropertyChangeListener() {

                        @Override
                        public void propertyChange(PropertyChangeEvent evt) {
                            String name = evt.getPropertyName();
                            if (name.equals("progress")) {
                                int progress = (int) evt.getNewValue();
                                pbProgress.setValue(progress);
                                repaint();
                            } else if (name.equals("state")) {
                                SwingWorker.StateValue state = (SwingWorker.StateValue) evt.getNewValue();
                                switch (state) {
                                    case DONE:
                                        start.setEnabled(true);
                                        break;
                                }
                            }
                        }

                    });
                    pw.execute();
                }
            });

        }
    }

    public class ProgressWorker extends SwingWorker<Object, Object> {

        @Override
        protected Object doInBackground() throws Exception {
            int i = 0;
            int max = 2000;

            while (i < max) {
                i += 10;
                int progress = Math.round(((float)i / (float)max) * 100f);
                setProgress(progress);
                try {
                    Thread.sleep(25);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            return null;
        }
    }
}
class ProgressBarUpdator implements java.lang.Runnable {

    /**
     * Progress bar that shows the current status
     */
    private javax.swing.JProgressBar jpb = null;
    /**
     * Progress bar value
     */
    private java.lang.Integer value = null;

    /**
     * Constructor
     * @param jpb The progress bar this has to update
     */
    public ProgressBarUpdator(javax.swing.JProgressBar jpb) {
        this.jpb = jpb;
        jpb.setMaximum(100);
    }

    /**
     * Sets the value to the progress bar
     * @param value Value to set
     */
    public void setValue(java.lang.Integer value) {
        this.value = value;
    }

    /**
     * Action of the thread will be executed here. The value of the progress bar will be set here.
     */
    public void run() {
        do {
            if (value != null) {
                jpb.setValue((int)java.lang.Math.round(java.lang.Math.floor(value.intValue() * 100 / maximum)));
            }
            try {
                java.lang.Thread.sleep(100L);
            } catch (java.lang.InterruptedException ex) {
                ex.printStackTrace();
            }
        } while (value == null || value.intValue() < jpb.getMaximum());
    }
}
ProgressBarUpdator ju = new ProgressBarUpdator(progressBar);
new java.lang.Thread(ju).start();
ju.setValue([Value to set]);
/*
By
Dr. Amit Kumar Kapoor
Assistant Professor, Maharaja Agrasen Institute of Management & Technology, Jagadhri
E-mail ID: akbrightfuture@gmail.com
*/
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    class progressbardemo extends JFrame implements ActionListener
       {
          JProgressBar pb;
          JButton b1;
              progressbardemo()
              {
                 super("Progressbar");
                 setLayout(null);
                 b1=new JButton("Click");
                 b1.setBackground(Color.yellow);             
                 pb=new JProgressBar(1,100);
                 pb.setValue(0);
                 pb.setStringPainted(true);
                 pb.setForeground(Color.red);   
                 pb.setBackground(Color.white); 
                 b1.setBounds(20,20,80,25);pb.setBounds(110,20,200,25);
                 pb.setVisible(false);
                 add(b1);
                 add(pb);             
                 b1.addActionListener(this);
                 setResizable(false);
                 setDefaultCloseOperation(EXIT_ON_CLOSE);
              }
               public void actionPerformed(ActionEvent e)
               {
                  int i=0;
                  if(e.getSource()==b1)
                     {
                       pb.setVisible(true);
                    try
                    {
                       while(i<=100)
                       {
                        Thread.sleep(50);
        pb.paintImmediately(0, 0, 200, 25);
            pb.setValue(i);
                         i++;
        }
                     }
                     catch(Exception e1)
                     {
        System.out.print("Caughted exception is ="+e1);
                     }
                    }
               }
              public static void main(String arg[])
              {
              progressbardemo m=new progressbardemo();
              m.setSize(330,100);
              m.setVisible(true);
              Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
              int x = (int) ((dimension.getWidth() - m.getWidth()) / 2);
              int y = (int) ((dimension.getHeight() - m.getHeight()) / 2);
              m.setLocation(x, y); 
              }
       }
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JProgressBar;

public class ProgressBar {
    /**
     * JProgressBar
     * 
     * @throws InterruptedException
     */
    public static void main(String[] args) throws InterruptedException {
        JFrame frame = new JFrame("New Window");
        frame.setSize(600, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setLayout(new GridBagLayout());
        frame.setVisible(true);

        //JLabel textLoad = new JLabel();
        //textLoad.setText("Loading ....");

        JProgressBar progressBar = new JProgressBar();        
        progressBar.setMinimum(0);
        progressBar.setMaximum(100);
        progressBar.setStringPainted(true);
        progressBar.setIndeterminate(true);
        frame.add(progressBar);                               

        for (int i = progressBar.getMinimum(); i <= progressBar.getMaximum(); i++) {
            Thread.sleep(500);
            progressBar.setValue(i);
        }

        textLoad.setText("Done !");
    }

}