日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

16、Java Swing JProgressBar:进度条组件

發(fā)布時(shí)間:2025/3/20 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 16、Java Swing JProgressBar:进度条组件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

**進(jìn)度條(JProgressBar)**是一種以可視化形式顯示某些任務(wù)進(jìn)度的組件。

JProgressBar 類(lèi)實(shí)現(xiàn)了一個(gè)用于為長(zhǎng)時(shí)間的操作提供可視化指示器的 GUI 進(jìn)度條。在任務(wù)的完成進(jìn)度中,進(jìn)度條顯示該任務(wù)完成的百分比。此百分比通常由一個(gè)矩形以可視化形式表示,該矩形開(kāi)始是空的,隨著任務(wù)的完成逐漸被填充。此外,進(jìn)度條可顯示此百分比的文本表示形式。

JProgressBar 類(lèi)的常用構(gòu)造方法和 JSlider 類(lèi)的常用構(gòu)造方法一樣,這里不再重復(fù)。如下示例代碼演示了如何創(chuàng)建一個(gè) JProgressBar 類(lèi)實(shí)例。
//

創(chuàng)建一個(gè)最小值是0,最大值是100的進(jìn)度條 JProgressBar pgbar=new JProgressBar(0,100); //創(chuàng)建一個(gè)最小值是0,最大值是60,當(dāng)前值是20的進(jìn)度條 JProgressBar pgbar=new JProgressBar(0,60,20);

JProgressBar 類(lèi)的常用方法:

  • getMaximum() ----返回進(jìn)度條的最大值
  • getMinimum()---- 返回進(jìn)度條的最小值
  • getPercentComplete()---- 返回進(jìn)度條的完成百分比
  • getString()---- 返回當(dāng)前進(jìn)度的 String 表示形式
  • getValue() ----返回進(jìn)度條的當(dāng)前 value
  • setBorderPainted(boolean b) ----設(shè)置 borderPainted 屬性,如果進(jìn)度條應(yīng)該繪制其邊框,則此屬性為true
  • setIndeterminate(boolean newValue) ----設(shè)置進(jìn)度條的 indeterminate屬性,該屬性確定進(jìn)度條處于確定模式中還 是處于不確定模式中
  • setMaximum(int n)---- 將進(jìn)度條的最大值設(shè)置為 n
  • setMinimum(int n) ----將進(jìn)度條的最小值設(shè)置為 n
  • setOrientation(int newOrientation) ----將進(jìn)度條的方向設(shè)置為 newOrientation
  • setString(String s) ----設(shè)置進(jìn)度字符串的值
  • setStringPainted(boolean b)----- 設(shè)置 stringPainted 屬性的值,該屬性確定進(jìn)度條是否應(yīng)該呈現(xiàn)進(jìn)度字符串
  • setValue(int n) ----將進(jìn)度條的當(dāng)前值設(shè)置為 n
  • updateUI() ----將 UI 屬性重置為當(dāng)前外觀對(duì)應(yīng)的值

其中,
setOrientation() 方法的參數(shù)值必須為 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。JProgressBar 使用 BoundedRangeModel 作為其數(shù)據(jù)模型,以 value 屬性表示該任務(wù)的“當(dāng)前”狀態(tài),minimum 和 maximum 屬性分別表示開(kāi)始點(diǎn)和結(jié)束點(diǎn)。

技巧:如果要執(zhí)行一個(gè)未知長(zhǎng)度的任務(wù),可以調(diào)用 setlndeterminate(true) 將進(jìn)度條設(shè)置為不確定模式。不確定模式的進(jìn)度條將持續(xù)地顯示動(dòng)畫(huà)來(lái)表示正進(jìn)行的操作。一旦可以確定任務(wù)長(zhǎng)度和進(jìn)度量,則應(yīng)該更新進(jìn)度條的值,將其切換到確定模式。

例 1
使用 JProgressBar 類(lèi)創(chuàng)建一個(gè)進(jìn)度條模擬程序升級(jí)過(guò)程,實(shí)現(xiàn)過(guò)程如下。

(1) 創(chuàng)建一個(gè)繼承自 JFrame 的 JProgressBarDemo 類(lèi)。

(2) 在構(gòu)造方法中添加一個(gè)空的進(jìn)度條,然后設(shè)置它的顯示屬性。主要代碼如下:

import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; public class JProgressBarDemo extends JFrame {//static JProgressBarDemo frame;public JProgressBarDemo(){setTitle("使用進(jìn)度條");JLabel label=new JLabel("歡迎使用在線升級(jí)功能!");//創(chuàng)建一個(gè)進(jìn)度條JProgressBar progressBar=new JProgressBar();JButton button=new JButton("完成");button.setEnabled(false);Container container=getContentPane();//獲取當(dāng)前窗口的內(nèi)容窗格container.setLayout(new GridLayout(3,1));//創(chuàng)建一個(gè)3行和1列的網(wǎng)格布局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); //添加標(biāo)簽panel2.add(progressBar); //添加進(jìn)度條panel3.add(button); //添加按鈕container.add(panel1);container.add(panel2);container.add(panel3);progressBar.setStringPainted(true);//進(jìn)度條是否顯示字符串//如果不需要進(jìn)度上顯示“升級(jí)進(jìn)行中...”,可注釋此行progressBar.setString("升級(jí)進(jìn)行中...");//設(shè)置進(jìn)度字符串的值//如果需要使用不確定模式,可使用此行//progressBar.setIndeterminate(true);//開(kāi)啟一個(gè)線程處理進(jìn)度new Progress(progressBar, button).start();//單機(jī)“完成”按鈕結(jié)束程序button.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){dispose();System.exit(0);}});}/*** @param args*/public static void main(String[] args){// TODO Auto-generated method stubJProgressBarDemo frame=new JProgressBarDemo();//frame.setBounds(300,200,300,150); //設(shè)置容器的大小frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();} }

(3) 創(chuàng)建 Progress 線程并實(shí)現(xiàn)對(duì)進(jìn)度條進(jìn)度的控制,實(shí)現(xiàn)代碼如下。

private class Progress extends Thread {JProgressBar progressBar;JButton button;//進(jìn)度條上的數(shù)字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<progressValues.length;i++){try{Thread.sleep(3000);}catch(InterruptedException e){e.printStackTrace();}//設(shè)置進(jìn)度條的值progressBar.setValue(progressValues[i]);}progressBar.setIndeterminate(false);progressBar.setString("升級(jí)完成!");button.setEnabled(true);} }

上述代碼定義了一個(gè)進(jìn)度條的進(jìn)度數(shù)組 progressValues。線程每隔 1000 毫秒從數(shù)組中取一個(gè)數(shù)字作為當(dāng)前進(jìn)度,并使用 JProgressBar 類(lèi)的 setValue() 方法更新到進(jìn)度條。最后使進(jìn)度條顯示“升級(jí)完成!”字符串,并使“完成”按鈕可用。

圖 1 為程序的運(yùn)行效果。圖 2 為調(diào)用 Setlndeterminate(true) 方法后進(jìn)度條使用不確定模式的運(yùn)行效果。圖 3 為默認(rèn)的數(shù)字進(jìn)度條運(yùn)行效果。

總結(jié)

以上是生活随笔為你收集整理的16、Java Swing JProgressBar:进度条组件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。