我需要想出一个让三个大字体看起来像是被打字/写字的方法。
我可以使用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);
}
}
答案 0 :(得分:4)
如果你真的想要显示文字,模拟就像某人正在打字一样,你可以使用javax.swing.Timer为此目的而只需使用JLabel
来显示{{1}上的文字而不是在JPanel
上绘制它,因为在绘画时,你必须担心字体度量和所述字符在给定位置的位置,这可能很麻烦。虽然如果你打算做一些与我在这里提出的不同的事情,请同样回答。
以下是您的帮助示例代码:
JPanel
答案 1 :(得分:1)
一些想法:
制作视频并播放(与.gif相同)
将信件分成小块并一个接一个地涂上这些碎片
定义路径并让“铅笔”在动态创建的图像上绘制
答案 2 :(得分:1)
选项1:
选项2:
您可以选择java字体,但它会有点复杂,如果上述选项不适合您,请参阅此页面,http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html