如何用java创建写作模拟?

时间:2012-08-09 17:04:31

标签: java swing fonts paintcomponent alphabetic

我需要想出一个让三个大字体看起来像是被打字/写字的方法。 我可以使用paintComponent();

创建信件

我需要有关如何实现这一目标的想法/示例?

这就是我已经做过的事。

public class LetterWriter extends JPanel {
   private String[] alphabets;
private Font font;

public LetterWriter() {
    createComponents();
    layoutComponents();
}

public void createComponents() {
    alphabets = new String[]{"A","B","C"};
    String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    font = new Font(fonts[7],1,500);
}

public void layoutComponents() {
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g.create();
    g2d.setFont(font);
    g2d.drawString(alphabets[0],getWidth()/7,getHeight()-50);
}

public static void main(String[] args) {
    LetterWriter demo = new LetterWriter();
    JFrame frame = new JFrame();
    Container cp = frame.getContentPane();
    cp.add(demo);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setLocation(500, 500);
    frame.setVisible(true);
}
}  

3 个答案:

答案 0 :(得分:4)

如果你真的想要显示文字,模拟就像某人正在打字一样,你可以使用javax.swing.Timer为此目的而只需使用JLabel来显示{{1}上的文字而不是在JPanel上绘制它,因为在绘画时,你必须担心字体度量和所述字符在给定位置的位置,这可能很麻烦。虽然如果你打算做一些与我在这里提出的不同的事情,请同样回答。

以下是您的帮助示例代码:

JPanel

答案 1 :(得分:1)

一些想法:

  • 制作视频并播放(与.gif相同)

  • 将信件分成小块并一个接一个地涂上这些碎片

  • 定义路径并让“铅笔”在动态创建的图像上绘制

答案 2 :(得分:1)

选项1:

  1. 在一张纸上画图像
  2. 拍摄照片并将其保存到电脑中
  3. 使用g.drawImage(“TheImageYouTook”,0,0,sizex,sizey);
  4. 选项2:

    您可以选择java字体,但它会有点复杂,如果上述选项不适合您,请参阅此页面,http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html