eclipse2019
JProgressBar常用的构造方法有两种: 构造方法1:创建一个水平进度条,它显示边框,但没有进度字符串。初始值和最小值为0,最大值为100。JProgressBar pgbar=new JProgressBar();
构造方法2:创建具有指定方向的进度条,该方向可以是SwingConstants.VERTICAL或SwingConstants.HORIZONTAL。默认情况下,会绘制边框,但不会绘制进度字符串。初始值和最小值为0,最大值为100。JProgressBar pgbar=new JProgressBar(int orient);
构造方法3:创建一个指定最小值和最大值的水平进度条,初始值是指定的最小值。默认情况下,会绘制边框,但不会绘制进度字符串。JProgressBar pgbar=new JProgressBar(int min,int max);
构造方法4:创建一个指定进度条方向、最小值和最大值的进度条,初始值是指定的最小值。默认情况下,会绘制边框,但不会绘制进度字符串。
getMaximum():返回进度条的最大值getMinimum():返回进度条的最小值getPercentComplete():返回进度条的完成百分比getString():返回当前进度的 String 表示形式getValue():返回进度条的当前 valuesetBorderPainted(boolean b):设置 borderPainted 属性,如果进度条应该绘制其边框,则此属性为 truesetIndeterminate(boolea newValue):设置进度条的 indeterminate 属性,该属性确定进度条处于确定模式中是处于不确定模式中setMaximum(int n):将进度条的最大值设置为 nsetMinimum(int n):将进度条的最小值设置为 nsetOrientation(int newOrientation):将进度条的方向设置为 newOrientationsetString(String s):设置进度字符串的值setStringPainted(boolean b):设置 stringPainted 属性的值,该属性确定进度条是否应该呈现进度字符串setValue(int n):将进度条的当前值设置为 nupdateUI():将 UI 属性重置为当前外观对应的值
定义一个进度条的进度数组 progressValues。线程每隔 200毫秒从数组中取一个数字作为当前进度,并使用 JProgressBar 类的 setValue() 方法更新到进度条。最后使进度条显示“升级完成!”字符串,并使“完成”按钮可用。
Demo23_JProgressBar 类代码如下: public class Demo23_JProgressBar extends JFrame{ public static void main(String[] args) { new Demo23_JProgressBar(); } public Demo23_JProgressBar() { setTitle('使用进度条'); SwingUtils.setCenter(this);//设置窗体大小600*800并居中 JLabel label=new JLabel('欢迎使用在线升级功能!'); label.setFont(new Font('宋体', 1, 25)); //创建一个进度条 JProgressBar progressBar=new JProgressBar(); progressBar.setPreferredSize(new Dimension(600, 30)); JButton button=new JButton('完成'); button.setEnabled(false); Container container=getContentPane(); container.setLayout(new GridLayout(3,1)); JPanel panel1=new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel panel2=new JPanel(new FlowLayout(FlowLayout.CENTER)); JPanel panel3=new JPanel(new FlowLayout(FlowLayout.RIGHT)); panel1.add(label); //添加标签 panel2.add(progressBar); //添加进度条 panel3.add(button); //添加按钮 container.add(panel1); container.add(panel2); container.add(panel3); progressBar.setStringPainted(true); //如果不需要进度上显示“升级进行中...”,可注释此行 progressBar.setString('升级进行中...'); //如果需要使用不确定模式,可使用此行// progressBar.setIndeterminate(true); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //开启一个线程处理进度 new Progress(progressBar, button).start(); //单机“完成”按钮结束程序 button.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ dispose(); System.exit(0); } }); }}class Progress extends Thread{ JProgressBar progressBar; JButton button; //进度条上的数字 int[] progressValues={6,18,27,39,51,66,81,100}; Progress(JProgressBar progressBar,JButton button){ this.progressBar=progressBar; this.button=button; } public void run(){ for(int i=0;i
SwingUtils 类代码如下: public class SwingUtils { public static void setCenter(JFrame jf) { int screenWidth=Toolkit.getDefaultToolkit().getScreenSize().width; int screenHeight=Toolkit.getDefaultToolkit().getScreenSize().height; int jframeWidth = 800; int jframeHeight = 600; jf.setBounds((screenWidth/2)-(jframeWidth/2), (screenHeight/2)-(jframeHeight/2), jframeWidth, jframeHeight); }}