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:是字节流通向字符流的桥梁。
出去旅游,暂停更新。
用漫不经心的态度过随遇而安的生活。