如何使字体变大然后在几秒后变小?

时间:2015-12-09 15:42:34

标签: java swing

我想让文字大一点,然后在几秒后再次变小,它会一直变得大而小。我该如何编码呢?​​

// DUMMY POST nfinity Blade是由Chair Entertainment和Epic Games开发的格斗游戏,于2010年12月9日通过App Store发布。它是第一款在虚幻引擎上运行的iOS视频游戏。在游戏中,未命名的玩家角色在一个废弃的城堡中与一系列一对一战斗,以面对不朽的神王。在战斗中,玩家可以轻扫屏幕进行攻击和招架,并点击屏幕闪避并阻挡敌人的攻击。胜利或失败后,玩家将重新开始游戏,作为角色的后代,具有相同的物品和经验等级。该游戏由一个由12人组成的团队开发,旨在展示虚幻引擎的新iOS版本。四次免费扩展增加了新设备,结局和游戏模式。该游戏在// DUMMYPOST

中赚了160万美元
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class FontSizeAnimation extends JPanel implements ActionListener {
 Timer timer;
int x = 1;
 float alpha = 1;

 public FontSizeAnimation() {
  timer = new Timer(4, this);
  timer.setInitialDelay(500);
 timer.start();
 }

public void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;

Font font = new Font("Dialog", Font.PLAIN, x);
g2d.setFont(font);

FontMetrics fm = g2d.getFontMetrics();
String s = "Java";

int w = (int) getSize().getWidth();
int h = (int) getSize().getHeight();

int stringWidth = fm.stringWidth(s);

g2d.drawString(s, (w - stringWidth) / 2, h / 2);
}

 public static void main(String[] args) {
  JFrame frame = new JFrame("FontSizeAnimation");
 frame.add(new FontSizeAnimation());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public void actionPerformed(ActionEvent e) 
{
x += 1;
alpha -= 0.0001;
repaint();
 }


}

1 个答案:

答案 0 :(得分:1)

当然有多种方法可以实现这一点,但是您可以创建一个变量,该变量包含字体大小应该变大或变小的变量。在actionPerformed()方法中更新该变量,然后根据变量的值更改字体大小。以下是您的代码示例(点击here进行预览,在帖子中会分散注意力):

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class FontSizeAnimation extends JPanel implements ActionListener {
    Timer timer;
    int x = 1;
    int lastX = 1;
    float alpha = 1;
    boolean bigger;

    public FontSizeAnimation() {
        timer = new Timer(4, this);
        timer.setInitialDelay(500);
        timer.start();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;

        Font font = new Font("Dialog", Font.PLAIN, x);
        g2d.setFont(font);

        FontMetrics fm = g2d.getFontMetrics();
        String s = "Java";

        int w = (int) getSize().getWidth();
        int h = (int) getSize().getHeight();

        int stringWidth = fm.stringWidth(s);

        g2d.drawString(s, (w - stringWidth) / 2, h / 2);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("FontSizeAnimation");
        frame.add(new FontSizeAnimation());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if (x > 50) {
            bigger = false;
        } else if (x < 2) {
            bigger = true;
        }
        if (bigger) {
            x++;
        } else {
            x--;
        }
        alpha -= 0.0001;
        repaint();
    }

}