多语言展示
当前在线:1835今日阅读:23今日分享:25

Swing 进度条组件怎么用

进度条(JProgressBar)是一种以可视化形式显示某些任务进度的组件,比如我们常见的视频播放进度,音乐播放进度,下载进度等都用到了进度条。在任务的完成进度中,进度条显示该任务完成的百分比,看起来很直观。Java Swing也有进度条组件:JProgressBar ,那么JProgressBar 要怎么用呢?接下来小编就来介绍一下进度条的使用
工具/原料

eclipse2019

一、构造方法
1

JProgressBar常用的构造方法有两种: 构造方法1:创建一个水平进度条,它显示边框,但没有进度字符串。初始值和最小值为0,最大值为100。JProgressBar pgbar=new JProgressBar();

2

构造方法2:创建具有指定方向的进度条,该方向可以是SwingConstants.VERTICAL或SwingConstants.HORIZONTAL。默认情况下,会绘制边框,但不会绘制进度字符串。初始值和最小值为0,最大值为100。JProgressBar pgbar=new JProgressBar(int orient);

3

构造方法3:创建一个指定最小值和最大值的水平进度条,初始值是指定的最小值。默认情况下,会绘制边框,但不会绘制进度字符串。JProgressBar pgbar=new JProgressBar(int min,int max);

4

构造方法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 属性重置为当前外观对应的值

三、实例
1

定义一个进度条的进度数组 progressValues。线程每隔 200毫秒从数组中取一个数字作为当前进度,并使用 JProgressBar 类的 setValue() 方法更新到进度条。最后使进度条显示“升级完成!”字符串,并使“完成”按钮可用。

2

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

3

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); }}

推荐信息