1、简单线程实现每隔一段时间字体颜色自动改变。
(1)创建类时实现Runnable接口(implements Runnable)
此时必须重写run方法
public void run() { Random random = new Random();// 创建随机数对象 while(true){ int R = random.nextInt(256);// 随机产生颜色的R值 int G = random.nextInt(256);// 随机产生颜色的G值 int B = random.nextInt(256);// 随机产生颜色的B值 color = new Color(R,G,B);// 创建颜色对象 repaint();// 调用paint()方法 try { Thread.sleep(300);// 休眠300毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } }
(2)在使用时需要创建线程对象,并启动(实际上是调用run方法)
Thread thread = new Thread(changeColorTextPanel);// 创建线程对象 thread.start();// 启动线程对象
2、实现水印效果的文字
使用到AlphaComposite类:将源色与目标色组合,在图形和图像中实现混合和透明效果。
g2.setColor(Color.BLACK);// 指定颜色 //srcover:实现不透明 SRC_OVER 规则的 AlphaComposite 对象,具有 1.0f 的 alpha 值。 //derive:返回一个类似的 AlphaComposite 对象,该对象使用指定的 alpha 值。 AlphaComposite alpha = AlphaComposite.SrcOver.derive(0.3f);// 获得表示透明度的AlphaComposite对象 g2.setComposite(alpha);// 指定AlphaComposite对象 g2.drawString("随遇而安", -60, 180);// 绘制文本,实现水印
3、将一个txt文件中的文本一个字一个字的动态输出
(1)同样使用到线程
public void run() { int len = 0;// 存储读取的字符 try { while ((len = read.read()) != -1) { // 读取内容 Thread.sleep(200); // 当前线程休眠400毫秒 value = String.valueOf((char) len); // 获得读取的内容 if (value.equals("\n") || value.equals("\r")) {// 是回车或换行符 x = 20;// 下一行起始点的x坐标 y += 15;// 下一行文本的y坐标 } else {// 不是回车或换行符 x += 20;// 当前行下一个字的x坐标 } repaint();// 调用paint()方法 } } catch (Exception e) { e.printStackTrace(); } }
(2)创建输入流对象
String projectPath = System.getProperty("user.dir"); // 获得当前项目 String filePath = projectPath + "/src3/DynamicDrawText06/dyn.txt";// 获得项目中loadText.java文件的完整路径 InputStream in = null; try { in = new FileInputStream(filePath); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 创建输入流对象 read = new BufferedReader(new InputStreamReader(in)); // 创建缓冲流对象
BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
InputStream :是用来从 CDR 编组流中读取 IDL 类型的 Java API。
InputStreamReader:是字节流通向字符流的桥梁。
出去旅游,暂停更新。
用漫不经心的态度过随遇而安的生活。