java中如何实现进度条效果

author author     2023-03-17     168

关键词:

代码如下:import java.awt.Color; import java.awt.Toolkit; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JProgressBar; import javax.swing.JWindow; @SuppressWarnings("serial") public class Demo extends JWindow implements Runnable // 定义加载窗口大小 public static final int LOAD_WIDTH = 455; public static final int LOAD_HEIGHT = 295; // 获取屏幕窗口大小 public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width; public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height; // 定义进度条组件 public JProgressBar progressbar; // 定义标签组件 public JLabel label; // 构造函数 public Demo() // 创建标签,并在标签上放置一张图片 label = new JLabel(new ImageIcon("images/background.jpg")); label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); // 创建进度条 progressbar = new JProgressBar(); // 显示当前进度值信息 progressbar.setStringPainted(true); // 设置进度条边框不显示 progressbar.setBorderPainted(false); // 设置进度条的前景色 progressbar.setForeground(new Color(0, 210, 40)); // 设置进度条的背景色 progressbar.setBackground(new Color(188, 190, 194)); progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); // 添加组件 this.add(label); this.add(progressbar); // 设置布局为空 this.setLayout(null); // 设置窗口初始位置 this.setLocation((WIDTH - LOAD_WIDTH) / 2, (HEIGHT - LOAD_HEIGHT) / 2); // 设置窗口大小 this.setSize(LOAD_WIDTH, LOAD_HEIGHT); // 设置窗口显示 this.setVisible(true); public static void main(String[] args) Demo t = new Demo(); new Thread(t).start(); @Override public void run() for (int i = 0; i < 100; i++) try Thread.sleep(100); catch (InterruptedException e) e.printStackTrace(); progressbar.setValue(i); JOptionPane.showMessageDialog(this, "加载完成"); this.dispose(); 效果图: 参考技术A

怎样做进度条,下面给个简单的做法:

主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax.swing.SwingWorker)

package org.ubird;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;

public class TestSwingWorker extends SwingWorker<List<Image>,String>

private JLabel status;
private JPanel viewer;
private String[] imagesName;
private JProgressBar jpb;

public static void main(String[] args) 
SwingUtilities.invokeLater(new Runnable()
public void run() 
TestFrame frame = new TestFrame();
final JPanel panel = new JPanel();
final JLabel label = new JLabel();

final String[] imagesName = new String[38];
for(int i=0; i<imagesName.length; i++)
imagesName[i] = "res/1 ("+(i+1)+").jpg";


JScrollPane sp = new JScrollPane(panel);
sp.setSize(new Dimension(700,500));
frame.add(sp,BorderLayout.CENTER);

JPanel stp = new JPanel();
final JProgressBar jpb = new JProgressBar();
jpb.setMinimum(1);
jpb.setMaximum(imagesName.length);
stp.add(jpb);
stp.add(label);
frame.add(stp,BorderLayout.SOUTH);

JButton button = new JButton("load image");
button.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e) 
TestSwingWorker sw = new TestSwingWorker(label, panel, imagesName, jpb);
sw.execute();

);

frame.add(button,BorderLayout.NORTH);

frame.setVisible(true);

);


public TestSwingWorker(JLabel status, JPanel viewer, String[] imagesName, JProgressBar jpb)
this.status = status;
this.viewer = viewer;
this.imagesName = imagesName;
this.jpb = jpb;


@Override
protected List<Image> doInBackground() throws Exception 
List<Image> image = new ArrayList<Image>();
for(int i=0; i<imagesName.length; i++)
image.add(ImageIO.read(getClass().getClassLoader().getResource(imagesName[i])));
publish("已经加载了  "+(i+1)+"/"+imagesName.length+" : "+imagesName[i]);

return image;


@Override
protected void process(List<String> chunks) 
status.setText(chunks.get(chunks.size()-1));
int x = Integer.parseInt(chunks.get(chunks.size()-1).substring(chunks.get(chunks.size()-1).indexOf("(")+1,chunks.get(chunks.size()-1).indexOf(")")).trim());
jpb.setValue(x);

for(String str : chunks)
System.out.println(str);



@Override
protected void done() 
try 
for(Image image : get())
JLabel label = new JLabel(new ImageIcon(image));
label.setSize(160, 120);
label.setPreferredSize(new Dimension(160,120));
viewer.add(label);

 catch (InterruptedException e) 
e.printStackTrace();
 catch (ExecutionException e) 
e.printStackTrace();




package org.ubird;

import javax.swing.JFrame;

public class TestFrame extends JFrame 


public TestFrame()
setTitle("Test Frame");
setSize(800,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

delphi中如何实现如图所示的进度条效果

说的详细点。先谢谢各位了。不要让我的分白给啊我是希望用label和进度条两个组件来实现的,不想装那么多组件 1.在Delphi5中通过菜单“File/NewApplication”创建一个新的工程。  2.在窗体中添加一个状态栏组件StatusBar1,一个But... 查看详情

纯css实现进度条效果

...度条;    斜纹进度条用线性渐变 linear-gradient类实现,原理很好理解,2个参数:      1、角度;      2、关键点(包含2个参数,1是颜色,2是长度位置)    displ 查看详情

进度条控件cprogressctrl实现进度滚动效果

关于CProgressCtrl控件的基本操作网上有很多资料,可我想实现进度条中进度滚动效果,即很多时候程序出现的等待或启动画面,如下图: 实现这个效果的函数为SetMarquee(_In_BOOLfMarqueeMode,_In_intnInterval),第一个参数为开关,第二... 查看详情

如何在android中实现材料设计圆形进度条

】如何在android中实现材料设计圆形进度条【英文标题】:Howtoimplementamaterialdesigncircularprogressbarinandroid【发布时间】:2015-01-0501:04:38【问题描述】:我想制作一个类似于InboxbyGmailandroid应用中的MaterialDesign圆形进度条。我如何实现... 查看详情

css静态进度条效果

今天学习到了实现一个静态进度条的方法,固写一篇笔记稳固一下自己的知识。最终的效果如下,进度条放在一个框里,水平宽自适应。现在就开始,首先写一个进度条先。.progress-bar{/*进度条的槽*/width:47%;/*设置进度条的高度*/h... 查看详情

java实现进度条

在java中,如何在一个for循环中实现进度条的变化,我这里for循环是耗时的,想for循环每次增加一,进度条就加以一,怎么实现??参考技术Aimportjava.awt.BorderLayout;importjavax.swing.JFrame;importjavax.swing.JProgressBar;publicclassTestextendsJFramepub... 查看详情

纯css3实现圆形进度条动画

悄悄地,GIF格式的进度条已经越来越少,CSS进度条如雨后春笋般涌现。今天要介绍的这个CSS3进度条,效果和FlymeOS4上的加载动画一样。首先,来看下最终的效果:  查看详情

androidprogressbar横向进度条动画效果

这篇文章主要为大家展示了“Android如何实现横向进度条演示效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android如何实现横向进度条演示效果”这篇文章吧。1.效果... 查看详情

js实现进度条效果

源代码:<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> </head> <styletype="text/css"> *{ margin:0pxauto; } #wk{ width:800px; h 查看详情

java上传excel文件,如何实现进度条显示?

比如,Excel有100条数据,上传20条时显示20%,并且支持后面带“×”按钮,以结束上传。有知道留下联系方式,可以追加分。参考技术A您好,1、开发简单,由于要定时起一个HTTP连接去获得进度信息,因此,发生的连接请求也增多... 查看详情

shell脚本实现转圈、进度条等效果

参考技术A开始shell光标闪烁通过符号#填充[]完成进度每个阶段有不同颜色区分进度按照百分比显示进度printf%3d为显示百分比预留了3位,循环条件i每次递增5主要是为了减少进度条显示的长度。i每次递增5,取模之后的index值还是... 查看详情

自定义view实现钟摆效果进度条pendulumview

...ei/article/details/52556755在网上看到了一个IOS组件PendulumView,实现了钟摆的动画效果。由于原生的进度条确实是不好看,所以想可以自定义View实现这样的效果,以后也可以用于加载页面的进度条。废话不多说,先上效果图底部黑边... 查看详情

jqueryajax进度条效果

...法,最后用总条目数来控制这个递归什么时候停止。追问如何得到总条目数啊?追答先用服务器语言得到,比如PHP,可操作数据库得到。再使用smarty传递到前台的HTML页面中的SCRIPT中的某一个变量。参考技术A其实这种效果在实际... 查看详情

自定义view实现钟摆效果进度条pendulumview

  在网上看到了一个IOS组件PendulumView,实现了钟摆的动画效果。由于原生的进度条确实是不好看,所以想可以自定义View实现这样的效果,以后也可以用于加载页面的进度条。  废话不多说,先上效果图  底部黑边是录制... 查看详情

串口屏开发之滑块控件的使用总结——如何通过滑动滑块实现进度条和文本的联动效果

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《嵌入式Linux开发实战 查看详情

学习|css3实现进度条加载

...种交互效果,这样做的目的是提高用户体验。进度条的的实现分为3大部分:1、页面布局,2、进度条动效,3、何时进度条增加。文件目录加载文件顺序<linkrel="stylesheet/less"href="./index.less"><scriptsrc="./zepto.min.js"></script>... 查看详情

网页加载进度条的实现

本次主要介绍一下网页加载进度的实现。如下图,在页面加载的时候,上方红色的进度条网页加载进度的好处是能够更好的反应当前网页的加载进度情况,loading进度条可用动画的形式从开始0%到100%完成网页加载这一过程。但是... 查看详情

使用定时器实现进度条效果

<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <style> body{ margin:0; padding:0; } header{ width:1000px; top:50px; 查看详情