如何使用 Java 创建写作模拟



我需要想出一种方法,让三个大字母看起来像是在打字/写的。我可以用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);
}
}  

如果您真的想显示文本,模拟就像有人在打字一样,您可以使用javax.swing.Timer,为此,只需使用JLabelJPanel上显示文本,而不是将其绘制在JPanel上,因为在绘画时,您必须担心字体指标和所述字符在给定位置的位置, 这可能很麻烦。不过,如果您打算做一些与我在这里介绍的不同的事情,请同样回复。

这是一个示例代码供您帮助:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TypingLetters
{
    private String text;
    private JLabel letterLabel;
    private int counter = 0;
    private Timer timer;
    private ActionListener timerAction = new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent ae)
        {
            if (counter <= text.length())
            {
                letterLabel.setText(text.substring(0, counter));
                counter++;
            }
            else
                timer.stop();
        }
    };
    public TypingLetters()
    {
        text = "A long text that I want to" +
                    " appear as being TYPED :-)";
    }
    private void displayGUI()
    {
        JFrame frame = new JFrame("Typing Letters Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel contentPane = new JPanel();
        letterLabel = new JLabel();
        contentPane.add(letterLabel);
        frame.setContentPane(contentPane);
        frame.setSize(500, 200);
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
        timer = new Timer(250, timerAction);
        timer.start();
    }
    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new TypingLetters().displayGUI();
            }
        });
    }
}

一些想法:

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

  • 将信件分成小块,并一个接一个地绘制这些碎片

  • 定义路径并让"铅笔"在 n 个动态创建的图像上绘制自己

选项 1:

  1. 在一张纸上绘制图像
  2. 拍摄照片并将其保存到计算机中
  3. 使用 g.drawImage("TheImageYouTook",0,0,sizex,sizey);

选项 2:

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

相关内容

  • 没有找到相关文章

最新更新