Java技巧:JLabel公告栏文字滚动效果
来源:互联网 发布:wms仓储管理系统源码 编辑:程序博客网 时间:2024/05/21 14:59
首先要掌握一个概念:一个字符串在计算机屏幕中所占的像素,比方说取一个JLabel里面的Text所占的宽和高,方法如下: (主要用到FontMetrics类)
import java.awt.FontMetrics;
import javax.swing.JLabel;
JLabel label = new JLabel("test Label ");
FontMetrics metrics = label.getFontMetrics(label.getFont());
int textH = metrics.getHeight(); //字符串的高,只和字体有关
int textW = metrics.stringWidth(label.getText()); //字符串的宽
通常情况下,一个空格占3个像素。
具体代码如下:
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Test { private JFrame frame; private String scrolledText; private String str = "滚动文字 Demo"; /** *//** * Launch the application * @param args */ public static void main(String args[]) { try { Test window = new Test(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** *//** * Create the application */ public Test() { initialize(); } /** *//** * Initialize the contents of the frame */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 500, 375); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel panel = new JPanel(); panel.setBackground(Color.WHITE); panel.setLayout(new BorderLayout()); frame.getContentPane().add(panel, BorderLayout.NORTH); final JLabel label = new JLabel(); label.setText("New JLabel"); panel.add(label); label_scrolledText(label); // 当窗体变化时要重新对label的滚动文字进行设置 frame.addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent arg0) { label_scrolledText(label); } }); } /** *//** * 滚动文字 * @param label */ public void label_scrolledText(JLabel label) { this.scrolledText = this.str; label.setText(scrolledText); FontMetrics metrics = label.getFontMetrics(label.getFont()); int textW = metrics.stringWidth(label.getText()); Dimension frameSize = frame.getSize(); for (int i = 1; i <= (frameSize.width - textW) / 3 - 3; i++) scrolledText += " "; label.setText(scrolledText); Thread thread = new Thread(new TextChanger(label)); thread.start(); } }
import javax.swing.JLabel; public class TextChanger implements Runnable { private JLabel label; public TextChanger(JLabel label) { this.label = label; } public void run() { try { while (true) { String text = label.getText(); if (text.length() > 1) { text = text.substring(1, text.length()) + text.charAt(0); label.setText(text); label.repaint(); } Thread.sleep(50); } } catch (InterruptedException ex) { ex.printStackTrace(); } } }
- Java技巧:JLabel公告栏文字滚动效果
- 公告栏文字上下滚动效果
- jQuery公告栏文字滚动插件
- 滚动公告栏
- web复习(三):js实现公告栏效果,间歇性滚动展示
- 页面文字滚动效果
- 文字向上滚动效果
- 文字滚动效果
- js 文字滚动效果。
- 文字向上滚动效果
- 文字横向滚动效果
- javascript 文字滚动效果
- 文字滚动效果
- 橱窗文字滚动效果
- Jquery文字滚动效果
- 文字滚动显示效果
- 文字滚动切换效果
- 文字横向滚动效果
- 历年系统架构设计师考试之设计模式试题分析-2010年
- Android开发--圆角按钮和绘制直线的实现
- 明明的预算方案-动态规划
- 如何定制一款12306抢票浏览器——启动“人”线程
- 《Thinking in Java》学习笔记——第一章:对象入门
- Java技巧:JLabel公告栏文字滚动效果
- Windows内存结构 .
- 历年系统架构设计师考试之设计模式试题分析-2011年
- zigbee开发连载系列(1)
- CString实现原理
- 修改 unity “显示桌面”快捷键的方法 (Ubuntu 12.10)
- 嵌入式学习经验2
- pyramid web framework [note pieces] 模板引擎
- [LeetCode] Permutations II