javaSwing之滚动弹幕(以不断更新的时间作为滚动内容)

package tst1;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class 滚动字幕 extends JFrame {
	static Calendar cal;
	static SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss,EEEE");
	static String mDateTime;
	static MovingMessagePanel messagePanel;

	public 滚动字幕() {
		Font font1 = new Font("华文行楷", Font.BOLD, 16);
		Calendar cal = Calendar.getInstance();
		mDateTime = formatter.format(cal.getTime());
		messagePanel = new MovingMessagePanel(mDateTime);
		messagePanel.setFont(font1);
		messagePanel.setBackground(Color.pink);
		messagePanel.setForeground(Color.black);
		add(messagePanel);
	}

	public static void main(String[] args) {
		滚动字幕 frame = new 滚动字幕();
		frame.setTitle("滚动字幕");
		frame.setLocationRelativeTo(null);// 置于屏幕中心
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(320, 120);
		frame.setVisible(true);
		Timer timer = new Timer(100, frame.new TimerListener());
		timer.start();
	}

	static class MovingMessagePanel extends JPanel {
		private String message = " ";
		private int x = 0;
		private int y = 50;

		public MovingMessagePanel(String message) {
			this.message = message;

		}

		public void paintComponent(Graphics g) {
			super.paintComponent(g);// 确保在显示新的图画之前清空视图区域
			if (x > getWidth()) {
				x = -200;
			}
			x += 3;
			this.message = mDateTime;
			g.drawString(message, x, y);
		}

	}

	class TimerListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {

			cal = Calendar.getInstance();
			mDateTime = formatter.format(cal.getTime());
			repaint();
		}

	}

}



如此可以实现滚动弹幕条和时间的不断刷新,欢迎交流讨论!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值