label2dtest.java
来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 140 行
JAVA
140 行
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.util.*;
public class Label2DTest extends Applet implements Runnable
{
// 动画线程
private Thread animation;
private BufferedGraphics offscreen;
// 要绘制的标签的数组
private Label2D[] labels;
// 我们将要用的各种字体的描述字符串
private final String[] fonts = {"Helvetica", "Arial", "Courier", "Terminal", "Georgia"};
// 方便创建TexturePaint对象使用的工具类
private TexturePaint createTexturePaint(String filename)
{
MediaTracker mt = new MediaTracker(this);
Image image = getImage(getCodeBase(), filename);
mt.addImage(image, 0);
try
{ mt.waitForAll();
}
catch(InterruptedException e) { /* 什么也不做 */ }
// 使用图像的宽和高创建一个新的BufferedImage
BufferedImage bi = new BufferedImage(
image.getWidth(this), image.getHeight(this), BufferedImage.TYPE_INT_RGB);
// 得到BufferedImage的Graphics2D容器并在上面绘制原来的图像
((Graphics2D)bi.getGraphics()).drawImage(image, new AffineTransform(), this);
// 为paint的图像创建边界矩形
Rectangle bounds = new Rectangle(0, 0, bi.getWidth(), bi.getHeight());
// 创建Paint
return new TexturePaint(bi, bounds);
}
public void init()
{
labels = new Label2D[fonts.length];
// 创建两个TexturePaint用来绘制- 一个用于可用状态,一个用于不可用状态
TexturePaint tpEnabled = createTexturePaint("label1.gif");
TexturePaint tpDisabled = createTexturePaint("label2.gif");
// 创建标签
for(int i = 0; i < fonts.length; i++)
{
// 用指定的字体、字体样式和可用paint创建一个Label2D
labels[i] = new Label2D(new Font(fonts[i], Font.PLAIN, 40), fonts[i], tpEnabled);
// 设置标签的位置
labels[i].setPos(new Vector2D.Double(50, 50+(i*50)));
// 设置标签的不可用paint
labels[i].setDisabledPaint(tpDisabled);
}
offscreen = new BufferedGraphics(this);
AnimationStrip.observer = this;
} // init
public void start()
{
// 启动动画线程
animation = new Thread(this);
animation.start();
}
public void stop()
{
animation = null;
}
public void run()
{
long time = System.currentTimeMillis();
Thread t = Thread.currentThread();
while (t == animation)
{
repaint();
try
{
Thread.sleep(10);
}
catch(InterruptedException e)
{
break;
}
// 每隔几秒反转一下标签的可用状态
if(System.currentTimeMillis() - time > 5000)
{
for(int i = 0; i < fonts.length; i++)
{
labels[i].setEnabled(! labels[i].isEnabled());
}
time = System.currentTimeMillis();
}
}
} // run
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
Graphics2D bg = (Graphics2D)offscreen.getValidGraphics();
bg.setPaint(Color.BLACK);
bg.fillRect(0, 0, getSize().width, getSize().height);
// 绘制标签
for(int i = 0; i < fonts.length; i++)
{
labels[i].paint(bg);
}
g.drawImage(offscreen.getBuffer(), 0, 0, this);
} // paint
} // Label2DTest
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?