0
点赞
收藏
分享

微信扫一扫

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());
}

}

}

作者:​​一乐乐​​


举报

相关推荐

0 条评论