进度条,就是一种可以 可视化地 显示某项任务的进度的组件,大概长这个样子:
实现进度条的是JProgressBar 类
下面是它的一些构造方法:
构造方法 | 说明 |
---|---|
JProgressBar () | 创建一个范围在 0~100 且初始值为 50 的进度条 |
JProgressBar (BoundedRangeModel brm) | 使用指定的 BoundedRangeModel 创建一个进度条 |
JProgressBar (int orientation) | 使用指定的方向创建一个进度条,范围在 0~100 且初始值为 50 |
JProgressBar (int min,int max) | 使用指定的最小值和最大值来创建一个进度条,初始值等于最小值加上最大值的平均值 |
JProgressBar (int min,int max,int value) | 用指定的最小值、最大值和初始值创建一个进度条 |
感觉和滑块差不多——对,就是差不多0.0!
这是一些常用的方法:
方法名称 | 说明 |
---|---|
getMaximum() | 返回进度条的最大值 |
getMinimum() | 返回进度条的最小值 |
getPercentComplete() | 返回进度条的完成百分比 |
getString() | 返回当前进度的 String 表示形式 |
getValue() | 返回进度条的当前 value |
setBorderPainted(boolean b) | 设置 borderPainted 属性,如果进度条应该绘制其边框,则此属性为 true |
setIndeterminate(boolean | |
newValue) | 设置进度条的 indeterminate 属性,该属性确定进度条处于确定模式中还 |
是处于不确定模式中 | |
setMaximum(int n) | 将进度条的最大值设置为 n |
setMinimum(int n) | 将进度条的最小值设置为 n |
setOrientation(int newOrientation) | 将进度条的方向设置为 newOrientation |
setString(String s) | 设置进度字符串的值 |
setStringPainted(boolean b) | 设置 stringPainted 属性的值,该属性确定进度条是否应该呈现进度字符串 |
setValue(int n) | 将进度条的当前值设置为 n |
updateUI() | 将 UI 属性重置为当前外观对应的值 |
知道还不行,现在赶快来创建一个进度条
import javax.swing.JProgressBar; //要导入的类,用于实现进度条
创建进度条:
JProgressBar jprogressbar1 = new JProgressBar(); //这是一个进度条
jprogressbar1.setMaximum(100); //用于设置进度条的最大值
jprogressbar1.setMinimum(0); //当然了,这个就是最小值
//上面三行代码,也可以用第4个构造方法实现,如下。
//JProgressBar jprogressbar1 = new JProgressBar(0,100);
下面是完整的代码:
import javax.swing.JPanel; //面板
import javax.swing.JButton; //按钮
import javax.swing.JFrame; //顶层容器 (框架)
import javax.swing.JLabel; //标签
import javax.swing.JProgressBar; //进度条的类
public class text_JProgressBar
{
public static void main(String args[])
{
JFrame jframe = new JFrame("进度条"); //窗口
jframe.setSize(450, 100); //设置窗口大小
JPanel jpanel1 = new JPanel(); //面板
JButton jbutton1 = new JButton("完成");
jbutton1.setEnabled(false); //设置按钮不可用,为灰色
JLabel jlabel1 = new JLabel("当前进度:");
JProgressBar jprogressbar1 = new JProgressBar(); //创建进度条
jprogressbar1.setMaximum(100);
jprogressbar1.setMinimum(0);
jpanel1.add(jlabel1);
jpanel1.add(jprogressbar1); //添加进度条
jpanel1.add(jbutton1); //添加按钮
jframe.add(jpanel1); //添加面板
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
jframe.setVisible(true); //设置可见
}
}
运行结果是这样的:
它还不会动,现在添加一点代码,让它动起来,从空到满
try
{
int i=0;
for(; i<=100; i++) //从0到100
{
if(i == 100)
{
jbutton1.setEnabled(true); //进度条满了设置按钮可用
}
jprogressbar1.setValue(i); //设置进度条的当前值
Thread.sleep(50); //堵塞50毫秒
}
} catch (InterruptedException e) {}
添加后的完整代码:
public class view
{
public static void main(String args[])
{
JFrame jframe = new JFrame("进度条"); //窗口
jframe.setSize(450, 100); //设置窗口大小
JPanel jpanel1 = new JPanel(); //面板
JButton jbutton1 = new JButton("完成");
jbutton1.setEnabled(false); //设置按钮不可用,为灰色
JLabel jlabel1 = new JLabel("当前进度:");
JProgressBar jprogressbar1 = new JProgressBar(); //创建进度条
jprogressbar1.setMaximum(100);
jprogressbar1.setMinimum(0);
jpanel1.add(jlabel1);
jpanel1.add(jprogressbar1); //添加进度条
jpanel1.add(jbutton1); //添加按钮
jframe.add(jpanel1); //添加面板
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
jframe.setVisible(true); //设置可见
try
{
int i=0; //计数器
for(; i<=100; i++) //从0到100
{
if(i == 100)
{
jbutton1.setEnabled(true); //进度条满了设置按钮可用
}
jprogressbar1.setValue(i); //设置进度条的当前值
Thread.sleep(50); //堵塞50毫秒
}
} catch (InterruptedException e) {}
}
}
运行结果:
水印我没办法弄掉,凑合看吧,嘿嘿…