Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

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);

    }
}