swing 跑马灯特效(不断动态前进的效果)

简介: swing 跑马灯特效(不断动态前进的效果)

跑马灯特效(不断动态前进的效果)

1,跑马灯特效的障眼法实现:就是前面不断循环 添加空格 ,视觉效果就好像跑起来了哈哈哈

swing写的跑马灯 + 进度条更新效果小项目 代码:

 

 ❀class ProgressBar

package ProgressBar;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
public class ProgressBar extends JFrame {
    private JButton startButton;    //开始按钮
    private JButton pauseButton;    //暂停按钮
    private JPanel contentPane;        //内容面板
    private JProgressBar progressBar;//进度条 ,使用默认的呀呀呀呀,不用基础JProgressBar重写一个好看的
    private ProgressBarTask progressBarTask;//进度条任务
    private MarqueeTask marqueeTask;        //跑马灯特效任务
    public ProgressBar() {
        //设置标题
        setTitle("进度条");
        //设置退出模式
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //设置大小
        setSize(800,600);
        //居中
        setLocationRelativeTo(null);
        //初始化
        initCommponents();
        //添加事件
        initEvents();
    }
    private void initCommponents() {
        //内容面板
        contentPane = (JPanel) getContentPane();
        //添加开始、暂停按钮
        startButton = new JButton("开始");
        pauseButton = new JButton("暂停");
        //顶部布局面板
        JPanel topPane = new JPanel();
        //顶部布局面板添加开始、暂停按钮
        topPane.add(startButton);
        topPane.add(pauseButton);
        //进度条面板
        JPanel progressBarPane = new JPanel();
        //进度条面板添加进度条
        progressBar = new JProgressBar();
        //设置进度条大小
        progressBar.setPreferredSize(new Dimension(600,30));
        //设置进度条的数字
        progressBar.setStringPainted(true);
        progressBarPane.add(progressBar);
        //内容面板添加你进度条面板到中间
        contentPane.add(progressBarPane, BorderLayout.CENTER);
        //内容面板添加顶部面板到顶部
        contentPane.add(topPane, BorderLayout.NORTH);
    }
    private void initEvents() {
        // 为开始按钮添加事件
        startActionListenner();
        //为暂停按钮添加事件
        pauseActionListener();
    }
    private void startActionListenner() {
        startButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
                    //开始进度条任务
                    progressBarTask = new ProgressBarTask(progressBar);
                    //装有进度条任务的线程
                    Thread thread1 = new Thread(progressBarTask);
                    thread1.start();
                    marqueeTask = new MarqueeTask(ProgressBar.this);
                    new Thread(marqueeTask).start();;
                }
            }
        });
    }
    private void pauseActionListener() {
        pauseButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                progressBarTask.stop();
            }
        });
    }
    public static void main(String[] args) {
        new ProgressBar().setVisible(true);
    }
}

 ❀class ProgressBarTask

package ProgressBar;
import java.util.concurrent.TimeUnit;
import javax.swing.JProgressBar;
/**
 * 进度条更新任务
 * @author Huangyujun
 *
*/
public class ProgressBarTask implements Runnable{
    //private ProgressBar progressBar;   因为咱自己写的Progress 没有继承JProgressBar重写它,
    //而是new 一个 JProgressBar默认样式
    //这里也要使用JProgressBar
    private JProgressBar progressBar; 
    private boolean isStopProgress = false;
    public ProgressBarTask(JProgressBar progressBar) {
        this.progressBar = progressBar;
    }
    @Override
    public void run() {
        int currValue = progressBar.getValue();
        // 开始进度条
        while (currValue < 100 && !isStopProgress) {
            currValue = progressBar.getValue();
            progressBar.setValue(currValue + 1);
            try {
                TimeUnit.MILLISECONDS.sleep(300);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    public void stop() {
        isStopProgress = true;
    }
}

 ❀class MarqueeTask

package ProgressBar;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
import javax.swing.JFrame;
/** 
 * 跑马灯特效任务
 * @author Huangyujun
 *
*/
public class MarqueeTask implements Runnable{
    private JFrame jFrame;
    String title;
    public MarqueeTask(JFrame jFrame) {
        this.jFrame = jFrame;
        title = jFrame.getTitle();
    }
    @Override
    public void run() {
        StringBuffer strTitle = new StringBuffer(title);
        while(true) {
            strTitle.insert(0, " ");
            if(strTitle.length() == 100) {
                strTitle = new StringBuffer(strTitle.toString().trim());
            }
            try {
                TimeUnit.MILLISECONDS.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            jFrame.setTitle(strTitle.toString());
        }
    }
}
目录
相关文章
|
29天前
|
前端开发 JavaScript 开发者
【QML进阶 进度条设计】打造动态弧形进度条特效
【QML进阶 进度条设计】打造动态弧形进度条特效
84 1
|
9月前
Echarts手机端无刷新实现图表自适应横屏和竖屏的解决方案
Echarts手机端无刷新实现图表自适应横屏和竖屏的解决方案
210 0
|
4月前
|
前端开发
前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)
前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)
26 0
|
5月前
|
前端开发
CSS 漂浮幽灵动画动态展示特效
CSS 漂浮幽灵动画动态展示特效
40 0
非常漂亮的纯css3实现多彩侧边导航(非常流畅),附效果演示
非常漂亮的纯css3实现多彩侧边导航(非常流畅),附效果演示
An动画基础之元件的图形动画与按钮动画
An动画基础之元件的图形动画与按钮动画
225 0
An动画基础之元件的图形动画与按钮动画
|
Java
Swing时钟动画绘制
本文利用Java原生Swing技术绘制一个时钟动画。
78 0
Swing时钟动画绘制
|
JSON Android开发 数据格式
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
用 Pyqt5 制作一个动态水波进度条
最近做了一个小项目,里面有一个需求需要添加一个动态进度条,进度条的样式就类似于水波来回起伏的那种形状,下面就是最初的展示效果(有一点区别,这里我加了一个进度自动增加的功能):