-1

3 つの大きな文字がタイプされている/書かれているように見せる方法を考え出す必要があります。で文字を作成できます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);
}
}  
4

3 に答える 3

4

誰かが入力しているかのようにシミュレートするテキストを本当に表示したい場合は、この目的のためにjavax.swing.TimerJLabel使用できます。フォント メトリクスと、指定された場所でのその文字の配置について心配する必要があり、面倒な場合があります。ここで提示したものとは別のことをするつもりなら、同様に返信してください。JPanelJPanel

ここにあなたの助けのためのコード例があります:

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();
            }
        });
    }
}
于 2012-08-09T17:34:03.093 に答える
1

いくつかのアイデア:

  • ビデオを作成して再生します (たとえば、.gif と同じ)

  • 手紙を細かく分割し、これらのピースを次々とペイントします

  • パスを定義し、動的に作成された画像に「鉛筆」を描画させます

于 2012-08-09T17:12:01.787 に答える
1

オプション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

于 2012-08-09T17:12:05.240 に答える