我需要想出一种方法,让三个大字母看起来像是在打字/写的。我可以用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,为此,只需使用JLabel
在JPanel
上显示文本,而不是将其绘制在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:
- 在一张纸上绘制图像
- 拍摄照片并将其保存到计算机中
- 使用 g.drawImage("TheImageYouTook",0,0,sizex,sizey);
选项 2:
您可以选择java字体,但会有点复杂,如果上述选项对您不起作用,请参阅此页面,http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html