import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* Java中用线程实现带有滚动效果的Label标签
* @author 五斗米 <如转载请保留作者和出处>
* @blog http://blog.csdn.net/mq612
*/
public class Test extends JFrame {
private static final long serialVersionUID = -2397593626990759111L;
private JPanel pane = null;
private MoveLabel label = null;
public Test() {
super("Test");
pane = new JPanel();
label = new MoveLabel("带有滚动效果的标签");
pane.add(label);
this.getContentPane().add(pane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setVisible(true);
}
public static void main(String args[]) {
new Test();
}
/**
* 带有滚动效果的Label标签,可继续拓展很多特效,例如颜色变换、速度变换等
*/
private class MoveLabel extends JLabel implements Runnable {
private static final long serialVersionUID = 1891684760189602720L;
private String text = null;
private Thread thread = null;
private int x = 0;
private int w = 0, h = 0;
public MoveLabel(String text) {
super(text);
this.text = text;
thread = new Thread(this);
thread.start();
}
public String getText() {
return text;
}
public void setText(String text) {
super.setText(text);
this.text = text;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(this.getBackground());
g.fillRect(0, 0, w = this.getWidth(), h = this.getHeight());
g.setColor(this.getForeground());
g.setFont(this.getFont());
g.drawString(text, x, h - 2);
}
public void run() {
while (true) {
x -= 2;
if (x < -w) {
x = w;
}
this.repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
分享到:
相关推荐
我这个是JAVA程序代码\GUI中用线程实现倒计时操作的方法 希望能帮到大家
java中用FileUtil实现文件读写
JAVA中用GUI编程实现计算器模拟,并附带源代码。上传内容仅供参考。
java中用FileUtil实现文件读写.pdf
Java语言使用hashmap实现向购物车添加删除修改商品,显示商品信息
Delphi中用多线程实现日志文件的读写与管理
2.讲解了在多线程中对并发访问的控制, 主要就是synchronized的使用, 由于此关键字在使用上非常灵活, 所以书中用了很多案例来介绍此关键字的使用, 为读者学习同步相关内容打好坚实的基础。3.介绍线程并不是孤独的...
java中用Ganymed实现SCP和SFTP文件传输.pdf
在java中用js 是实现代码树的显示
本项目主要是实现了在jni中用多线程调用java对象。代码调试通过。直接导入到eclipse即可运行
APPLET中用线程实现动画,其效果类似于网页上面播放的动画.
用JAVA实现的文件上传,控制台输入,保存到数据库
8*8的国际象棋上有八个皇后他们不能在同一行。同一列和斜对角和java中用多线程复制文件
* <p>Title: 提高线程优先级 * <p>Description: 通过修改线程的优先级,是线程获得优先处理。 * <p>Copyright: Copyright (c) 2003 * <p>Filename: upPRIThread.java * @author * @version 1.0
JAVA中用GUI编程实现计算器模拟.docxJAVA中用GUI编程实现计算器模拟.docxJAVA中用GUI编程实现计算器模拟.docxJAVA中用GUI编程实现计算器模拟.docxJAVA中用GUI编程实现计算器模拟.docxJAVA中用GUI编程实现计算器模拟....
label 元素不会向用户呈现任何特殊效果 label把事件转移到相关元素上面 for 属性规定 label 与那个元素绑定绑定事件
java多线程机制: 例子 1 public class Example1 { static Lefthand left;static Righthand right; public static void main(String args[]) { left=new Lefthand(); //创建两个线程。 right=new Righthand();...
J2EE面试题之多线程的问题几乎都在这.
java中用数组为一个类定义多个对象,并对其进行实例化
java及j2ee开发中常需要将对象转成json字符串进行数据传输,该包提供了JAVA对象和json字符串之间的转换方法。常见的类有JSONObject等