`

Java中用线程实现带有滚动效果的Label标签

阅读更多
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();
    }
   }
  }
 }

}
分享到:
评论

相关推荐

    GUI中用线程实现倒计时

    ### GUI中用线程实现倒计时的知识点详解 #### 一、背景介绍 在图形用户界面(GUI)开发中,实现倒计时功能是非常常见的需求之一,尤其是在计时器应用、在线考试系统、游戏等领域。Java作为一种广泛使用的编程语言,...

    基于Java多线程实现所有顶点间最短路径的并行算法

    ### 基于Java多线程实现所有顶点间最短路径的并行算法 #### 概述 本文探讨了一种使用Java多线程技术来实现所有顶点间最短路径问题的并行算法。该算法主要针对的是图论中的经典问题——最短路径问题,并通过对...

    jni中用多线程调用java代码

    描述中提到的“在JNI中用多线程调用Java对象”,意味着在C/C++代码中创建并管理多个线程,每个线程负责调用不同的Java方法或者处理不同的Java对象。在Android中,线程管理对于优化应用性能和避免UI阻塞至关重要。...

    java中用FileUtil实现文件读写.pdf

    java中用FileUtil实现文件读写.pdf

    JAVA Socket编程实现文件上传

    以上就是使用Java Socket编程实现文件上传涉及到的主要知识点,包括Socket通信机制、文件I/O、数据库操作、异常处理、多线程、安全性和性能优化等方面。理解并掌握这些内容,对于开发高效、可靠的文件上传系统至关...

    Java中用hashmap实现购物车

    Java语言使用hashmap实现向购物车添加删除修改商品,显示商品信息

    html中label标签的使用

    4. **样式化**:开发者可以通过CSS对`&lt;label&gt;`标签进行样式设置,以增强表单的视觉效果,使其更加符合整体的设计风格。 5. **内联绑定**:除了使用`for`属性,还可以将控件嵌套在`&lt;label&gt;`标签内部,达到相同的效果...

    java面试题之多线程

    在Java多线程编程中,面试题常常涉及到线程的基本概念、同步与异步的区别、线程同步方法以及Java提供的并发工具类。下面我们将深入探讨这些知识点。 1. **线程间的协作**: - `sleep()` 和 `wait()` 的区别:`...

    java中用socket实现简单聊天通信的源码

    在这个“java中用socket实现简单聊天通信的源码”中,我们可以深入理解如何使用Java进行网络通信,这对于任何想要构建基于网络的应用程序的开发者来说都是至关重要的。 首先,让我们了解一下Socket的基本概念。...

    java多线程编程_java多线程_

    2.讲解了在多线程中对并发访问的控制, 主要就是synchronized的使用, 由于此关键字在使用上非常灵活, 所以书中用了很多案例来介绍此关键字的使用, 为读者学习同步相关内容打好坚实的基础。3.介绍线程并不是孤独的...

    java中用Ganymed实现SCP和SFTP文件传输.pdf

    java中用Ganymed实现SCP和SFTP文件传输.pdf

    java中动画的实现

    APPLET中用线程实现动画,其效果类似于网页上面播放的动画.

    线程优先级|java线程优先级

    * &lt;p&gt;Title: 提高线程优先级 * &lt;p&gt;Description: 通过修改线程的优先级,是线程获得优先处理。 * &lt;p&gt;Copyright: Copyright (c) 2003 * &lt;p&gt;Filename: upPRIThread.java * @author * @version 1.0

    Delphi中用多线程实现日志文件的读写与管理

    本文将深入探讨如何在Delphi中利用多线程技术来实现日志文件的高效读写与管理。 首先,了解多线程的概念。在单线程环境下,所有的操作都是顺序执行的,如果在处理日志时阻塞了主线程,可能会导致用户界面的卡顿。而...

    Java多线程程序设计.pdf

    线程优先级是Java中用来表达线程重要性的一个概念,通过Thread类的setPriority()方法可以设置线程优先级,Java定义了三个优先级常量:MIN_PRIORITY、NORM_PRIORITY和MAX_PRIORITY。数值范围是1到10,数值越高优先级...

    JAVA中用到的json包

    在Java编程语言以及基于J2EE的企业级应用开发中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式。它易于人阅读和编写,同时也容易让机器解析和生成。JSON包在Java中扮演着至关重要的角色,...

    java线程的学习

    ### Java线程学习知识点 #### 一、Java线程基础 **Java线程的重要性:** Java语言支持多线程机制,这是开发高性能应用的关键之一。多线程可以让程序执行更高效,尤其在处理复杂的计算任务或者提高用户界面的响应...

    线程调度的优先级

    这是因为Java线程调度采用了非确定性的抢占式调度策略,即使优先级较高的线程也可能因为其他原因(如线程休眠、同步锁等)被暂时挂起,让其他线程有机会执行。 Java线程的优先级分为三个级别: 1. **NORM_PRIORITY*...

Global site tag (gtag.js) - Google Analytics