博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
滚动字幕
阅读量:6982 次
发布时间:2019-06-27

本文共 2507 字,大约阅读时间需要 8 分钟。

昨天培训讲了JPanel的paint方法,突然想到以前看到过滚动字幕是靠paint方法做的,于是乎又是各种百度找模版,写了个滚动字幕的Panel。

做的是左右来回滚动的那种。

package com.raikou.MusicPlayer;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JPanel;import javax.swing.Timer;public class PanelTitle extends JPanel {    private static final long serialVersionUID = 1L;    private String message = " ";    private int xCoordinate = 0;    private int yCoordinate = 10;    private int count=0;    private boolean flag = false;    private int delay = 0;        public PanelTitle(String message) {        this.message = message;                Timer timer = new Timer(100, new TimerListener());        timer.start();    }        public void restr(String message)    {        this.message = message;        xCoordinate = 0;            }        public void paintComponent(Graphics g)    {        super.paintComponent(g);        yCoordinate = getHeight()/2 + 4;        //System.out.println(getWidth());        Graphics2D g2 = (Graphics2D)g;        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);        //System.out.println( message.getBytes().length);        int textWidth = getFontMetrics(g2.getFont()).bytesWidth(message.getBytes(), 0, message.getBytes().length);        //System.out.println(textWidth);                if(!flag)        {
//设置字符串到达最左端或最右端时停留3秒 delay++; if(delay>30) { flag = true; delay = 0; } } else { if (textWidth > getWidth()) { if(xCoordinate>=-(textWidth-getWidth()+5)&&count%2==0) { xCoordinate -= 2; if(xCoordinate <=-(textWidth-getWidth()+5)) { count++; flag = false; } } else if(xCoordinate <= 5 && count%2!=0) { xCoordinate += 2; if(xCoordinate >= 5) { count++; flag = false; } } } } g.drawString(message, xCoordinate, yCoordinate); } class TimerListener implements ActionListener { public void actionPerformed(ActionEvent e) { repaint(); } }}

 

转载于:https://www.cnblogs.com/raikouissen/p/3313517.html

你可能感兴趣的文章
office常用的快捷键
查看>>
JavaScript语法详解(一)
查看>>
zimbra mailbox 备份与恢复
查看>>
【18】Python半成品购物车
查看>>
RedHat Linux KVM安装配置
查看>>
01 jquery easyui 入门示例
查看>>
oracle rac 扩展磁盘采坑记录
查看>>
Deprecated:function eregi() is deprecated in /usr/local/apache/libraries/lib_lang.php on line 8
查看>>
2.shell前基础知识
查看>>
resin4 配置https
查看>>
mysql备份脚本
查看>>
monit安装
查看>>
为什么你的服务器被列入垃圾邮件?
查看>>
游戏角色动作太羞耻?现在AI能帮忙了(也有论文)
查看>>
phpcms 调用多级栏目和多级栏目下的文章列表
查看>>
InputStream与OutputStream的使用例子
查看>>
人工智能应用范围那么广,但融资最多的还是医疗卫生
查看>>
计算机网络概述
查看>>
邮件服务器搭建之:详解Dovecot配置
查看>>
macbook中的一些快捷功能
查看>>