每日小结130930

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:是字节流通向字符流的桥梁。

 

 

 

 

 

出去旅游,暂停更新。

用漫不经心的态度过随遇而安的生活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值