1.自定义一个继承自JPanel的类MyJPanel,重写MyJPanel类的paintComponent方法,在此方法内部完成诗句的绘制。2.创建一个MyJPanel对象,替换Jframe默认的内容面板。(setContentPane方法...

1. 自定义一个继承自JPanel的类MyJPanel,重写MyJPanel类的paintComponent方法,在此方法内部完成诗句的绘制。

2. 创建一个MyJPanel对象,替换Jframe默认的内容面板。(setContentPane方法)。

3. 在程序主线程中创建一个新的线程,此线程不断的刷新MyJPanel。刷新时会自动调用paintComponent方法,从而完成界面的更新。

MyJPanel类编程指导:

1. 定义成员变量sentences保存要诗词: String[] sentences = { "滚滚长江东逝水", "浪花淘尽英雄","是非成败转头空", "青山依旧在", "几度夕阳红","白发渔樵江渚上", "惯看秋月春风","一壶浊酒喜相逢", "古今多少事", "都付笑谈中" };

2. 将MyJPanel组件区域按字体大小划分成固定列数,每列用于显示一条诗句。本部分功能在paintComponent方法中完成。因为一个组件只有开始绘制时JVM才能确定其大小位置等。

a) 申明两个成员变量:int[]cols;Graphics canvas;,cols用于保存每列的起始横坐标,canvas指向当前组件的图形绘制对象,用Jcomponent类的getGraphics()可以获得这个图形绘制对象(以下称之为画布)。

b) 获取字的宽度过程是首先取得画布,创建字体对象并设置画布的字体,随后便可以获取字体在此图形上下文环境中字的尺寸了:

canvas = getGraphics();

Font font = new Font("华文行楷", Font.BOLD, 40);

canvas.setFont(font);

FontMetrics metrics =canvas.getFontMetrics(font);

Rectangle2D rect =metrics.getStringBounds("水",canvas);

int wordWidth = (int)rect.getWidth();

c) 计算区域总列数。计算方法是用组件的总宽度去除以每个字的宽度与间隙和。代码如下,其中wordGap是一个局部变量,表示两列间的间隙:

int totalCols = getWidth() / (wordWidth + wordGap);

cols = new int[totalCols];

for (int i = 0; i < cols.length; i++) {

cols[i] = i * (wordGap+ wordWidth);

}

展开

java 滚动字幕_Java程序 实现图形面板上的字幕滚动效果相关推荐

  1. java 组件 接口_java学习之图形用户接口AWT组件部分

    记录学习Java私塾Java视频培训教程中级-9 图形用户接口AWT组件部分 学习视频资源分享: 地址:http://pan.baidu.com/s/1eSDiZAi 密码:lvy6 PS:视频的画质 ...

  2. java 图类_java笔记之图形类详解

    软件的交互方式: 1. 控制台的交互方式. 2. 图形化界面的交互方式 . java使用到的图形类主要在java.awt 与javax.swing包中. java.awt 与 javax.swing包 ...

  3. java 复制对象_Java程序员必备:序列化全方位解析

    前言 相信大家日常开发中,经常看到Java对象"implements Serializable".那么,它到底有什么用呢?本文从以下几个角度来解析序列这一块知识点~ 什么是Java ...

  4. java运行慢_Java程序运行一段时间后越来越慢

    我有一个java程序,它是典型的机器学习算法,通过一些方程来更新某些参数的值: for (int iter=0; iter<1000; iter++) { // 1. Create many t ...

  5. java标量替换_JAVA逃逸分析、栈上分配、标量替换、同步消除

    一.逃逸分析 逃逸分析是编译语言中的一种优化分析,而不是一种优化的手段.通过对象的作用范围的分析,为其他优化手段提供分析数据从而进行优化. 逃逸分析包括: 全局变量赋值逃逸 方法返回值逃逸 实例引用发 ...

  6. java gui 结构_java gui教学图形界面的层次结构.ppt

    java gui教学图形界面的层次结构.ppt 还剩 13页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 事件 ...

  7. java线程倒计时_Java程序如何实现多线程倒计时牌

    java作为目前最为流行的计算机开发语言之一,学习java是高薪就业的好选择,以下是关于Java程序如何实现多线程倒计时牌,希望下面的内容介绍,能够让大家对于Java程序如何实现多线程倒计时牌更加了解 ...

  8. java手动输入函数_Java程序如何添加一个函数,如果玩家输入错误,它将返回代码。...

    我的程序有问题,不是代码问题,而是我要怎么做,这是我一直困惑的部分.只是为了让你知道我是一个基本的Java编码器,我不理解复杂的东西,所以请记住,我的代码不是最好的. ---------------- ...

  9. 容易答错的java面试题_Java程序员面试中最容易答错的8道面试题,你中招了吗?...

    1. static 和 final 的用法 static 的作用从三个方面来谈,分别是静态变量.静态方法.静态类. 静态变量:声明为 static 的静态变量实质上就是全局变量,当声明一个对象时,并不 ...

  10. java运行原理_Java程序的加载与运行原理详解

    Java程序的运行包括两个非常重要的阶段: 一.编译阶段 第一步:程序员需要在计算机硬盘中任意位置创建一个.java扩展名的文件,该文件被称为 java源文件,源文件当中编写的是java源代码/源程序 ...

最新文章

  1. UA OPTI501 电磁波 Lorentz Oscillator Model 4 Hilbet变换与Kramers-Konig关系式
  2. 机器学习中向量化编程总结记录
  3. [css] box-sizing的宽度包含了哪些?
  4. 利用expect实现自动化操作
  5. 如何使用Native Messaging API 打开window程序
  6. 大数据量下高并发同步的讲解(不看,保证你后悔!)
  7. 7月目标 socket , 一致性哈希算法 ; mongodb分片; 分布式消息队列; 中间件的使用场景...
  8. 理解Semaphore及其用法详解
  9. 【iCore3双核心板】iCore3双核心板使用说明(图文)
  10. 小学计算机属于数学与科学吗,我是计算机专业,想考小学信息技术教师资格证没有,那我是报科学还是...
  11. Hadoop大数据原理与应用实验教程
  12. 腾讯音乐2020年报:懒人听书收购完成,谢振宇、太盟投资减持
  13. 刚刚,北大智能学院成立!AI视觉泰斗朱松纯教授任院长
  14. OPPO Find5 X909T ColorOS1.0系统精简笔记
  15. 软件快捷方式测试用例,用TestDirector生成的测试用例
  16. python socket编程之双方相互通信简单实例
  17. 《人工智能基础》——线性回归算法推导
  18. 计算机嵌入式课程置换论文,嵌入式课程学习论文
  19. Snort用户手册(转)
  20. 精彩机械动图:人类真是太聪明了

热门文章

  1. java动态添加成员变量,java如何访问成员变量
  2. 【STM32】关于DMA控制器的介绍和使用
  3. IEEE 802.11标准协议下载
  4. 程序员的自我修养_之四_曾国藩是如何脱胎换骨的
  5. TCSVT论文结构整理
  6. Matter 研讨会回顾(第二期)|乐鑫 Matter SDK 开发平台介绍和使用
  7. bspline怎么使用 python_B-Spline曲线拟合
  8. K8s 集群上运行ca机制
  9. 用elasticsearch和kibana 进行简单的实时数据报表分析
  10. 智能实验室管理系统的现状怎么样