JProgressBar用于显示任务的进度。它有一个方向,可以是水平或垂直。
JProgressBar有三个与之相关的值:当前值,最小值和最大值。
要创建具有当前值,最小值和最大值的水平进度条分别设置为0,0和100。
JProgressBar hpBar1 = new JProgressBar();
要创建具有当前值,最小值和最大值的水平进度条 分别设置为20,20和200。
JProgressBar hpbar2 = new JProgressBar(SwingConstants.HORIZONTAL, 20, 200);
要创建具有当前,最小和最大值的垂直进度条 分别设置为5,5和50。
JProgressBar vpBar1 = new JProgressBar(SwingConstants.VERTICAL, 5, 50);
要使用其setValue(int value)设置进度条的当前值,方法来指示进度。
要显示描述进度条当前值的字符串,请使用setStringPainted(true)方法,并通过调用setString(String s)方法设置要绘制的String。
我们可以使用setIndeterminate()方法在不确定模式下设置进度条。
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; // www . j a va2 s . c o m import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JProgressBar; public class Main extends JFrame { JProgressBar bar = new JProgressBar(); JButton step = new JButton("Step"); public Main() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); step.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int value = bar.getValue() + 7; if (value > bar.getMaximum()) { value = bar.getMaximum(); } bar.setValue(value); } }); getContentPane().add(bar, BorderLayout.NORTH); getContentPane().add(step, BorderLayout.EAST); pack(); setVisible(true); } public static void main(String arg[]) { new Main(); } }
进度条用于冗长的任务。
import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JProgressBar; import javax.swing.Timer; public class Main { public static void main(String[] args) { final Timer timer; final JProgressBar progressBar = new JProgressBar(); final JButton button = new JButton("Start"); JFrame f = new JFrame(); f.setLayout(new FlowLayout()); f.add(progressBar); f.add(button); ActionListener updateProBar = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { int val = progressBar.getValue(); if (val >= 100) { // timer.stop(); button.setText("End"); return; } progressBar.setValue(++val); } }; timer = new Timer(50, updateProBar); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (timer.isRunning()) { timer.stop(); button.setText("Start"); } else if (button.getText() != "End") { timer.start(); button.setText("Stop"); } } }); f.pack(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setResizable(false); f.setLocationRelativeTo(null); f.setVisible(true); } }
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JProgressBar; public class Main { static class BarThread extends Thread { private static int DELAY = 500; JProgressBar progressBar; public BarThread(JProgressBar bar) { progressBar = bar; } public void run() { int minimum = progressBar.getMinimum(); int maximum = progressBar.getMaximum(); for (int i = minimum; i < maximum; i++) { try { int value = progressBar.getValue(); progressBar.setValue(value + 1); Thread.sleep(DELAY); } catch (InterruptedException ignoredException) { } } } } public static void main(String args[]) { JFrame frame = new JFrame("Stepping Progress"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JProgressBar aJProgressBar = new JProgressBar(0, 50); aJProgressBar.setStringPainted(true); final JButton aJButton = new JButton("Start"); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { aJButton.setEnabled(false); Thread stepper = new BarThread(aJProgressBar); stepper.start(); } }; aJButton.addActionListener(actionListener); frame.add(aJProgressBar, BorderLayout.NORTH); frame.add(aJButton, BorderLayout.SOUTH); frame.setSize(300, 200); frame.setVisible(true); } }
要将标签更改为固定字符串,请调用public void setString(String newValue)方法和setStringPainted(true)。在垂直进度条上,字符串被绘制旋转,因此更长的字符串将更好。
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JProgressBar; class BarThread extends Thread { private static int DELAY = 500; JProgressBar progressBar; public BarThread(JProgressBar bar) { progressBar = bar; } public void run() { int minimum = progressBar.getMinimum(); int maximum = progressBar.getMaximum(); for (int i = minimum; i < maximum; i++) { try { int value = progressBar.getValue(); progressBar.setValue(value + 1); Thread.sleep(DELAY); } catch (InterruptedException ignoredException) { } } } } public class Main { public static void main(String args[]) { JFrame frame = new JFrame("Stepping Progress"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JProgressBar aJProgressBar = new JProgressBar(JProgressBar.VERTICAL); aJProgressBar.setStringPainted(true); final JButton aJButton = new JButton("Start"); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { aJButton.setEnabled(false); Thread stepper = new BarThread(aJProgressBar); stepper.start(); } }; aJButton.addActionListener(actionListener); frame.add(aJProgressBar, BorderLayout.NORTH); frame.add(aJButton, BorderLayout.SOUTH); frame.setSize(300, 200); frame.setVisible(true); } }
不确定模式:进度条从一侧到另一侧反弹。
import java.awt.BorderLayout; // w w w .java 2 s .co m import javax.swing.JFrame; import javax.swing.JProgressBar; public class Main { public static void main(String args[]) { JFrame frame = new JFrame("Stepping Progress"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JProgressBar aJProgressBar = new JProgressBar(JProgressBar.VERTICAL); aJProgressBar.setStringPainted(true); aJProgressBar.setIndeterminate(true); frame.add(aJProgressBar, BorderLayout.NORTH); frame.setSize(300, 200); frame.setVisible(true); } }
监听JProgressBar组件中的值更改
import javax.swing.JProgressBar; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main { public static void main(String[] argv) throws Exception { int minimum = 0; int maximum = 100; JProgressBar progress = new JProgressBar(minimum, maximum); progress.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent evt) { JProgressBar comp = (JProgressBar) evt.getSource(); int value = comp.getValue(); int min = comp.getMinimum(); int max = comp.getMaximum(); } }); } }
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢!『 与其纠结,不如行动学习。Innovate ,And o...
注意版本要求:3.4.0版本以上MybatisPlusInterceptor该插件是核心插件,目前代理了Executor#query和Executor#update和S...
resultMap元素是MyBatis中最重要最强大的元素。它可以让你从90%的JDBCResultSets数据提取代码中解放出来,并在一些情形下...
映射类型当你准备一个 Hibernate 映射文件时,我们已经看到你把 Java 数据类型映射到了 RDBMS 数据格式。在映射文件中已经声明被...
一、运行环境: 1、操作系统:windows 10 x64 2、eclipse版本: Version: 2019-06 (4.12.0) Build id: 20190614-1200 3、Web服务...
让我们使用 Spring 框架开始实际的编程。在你开始使用 Spring 框架编写第一个例子之前,你必须确保已经正确地设置了 Spring 环境...
Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系。 什么是依赖注入每个基于应用程序的 java 都有几个...
Spring 中基于 AOP 的 XML架构为了在本节的描述中使用 aop 命名空间标签,你需要导入 spring-aop 架构,如下所述:?xml version=...
ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。为了方便大家理解,我们将ServletContext和Co...