import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new StringPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
class StringPanel extends JPanel {
static final int D_H = 500;
static final int D_W = 500;
int x = 50;
int y = 50;
List<String> list = new ArrayList<>();
Random random = new Random(System.currentTimeMillis());
String word;
Font font = new Font("impact", Font.PLAIN, 28);
int wordWidth;
int wordHeight;
public StringPanel() {
for (int i = 1; i <= 100; i++) {
list.add("Word " + i);
}
word = list.get(0);
Timer timer = new Timer(500, e -> {
int rand = random.nextInt(list.size());
word = list.get(rand);
x = random.nextInt(D_W - wordWidth);
y = random.nextInt(D_H) + wordHeight;
repaint();
});
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
FontMetrics fm = g.getFontMetrics(font);
wordWidth = fm.stringWidth(word);
wordHeight = fm.getAscent();
g.setFont(new Font("impact", Font.PLAIN, 28));
g.setColor(Color.BLUE);
g.drawString(word, x, y);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(D_H, D_W);
}
}