Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.Timer;

public class Main {
    static JTabbedPane jtp = new JTabbedPane();

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jtp.setPreferredSize(new Dimension(400, 200));
        createTab("Reds", Color.RED);
        f.add(jtp, BorderLayout.CENTER);
        f.pack();
        f.setVisible(true);
    }

    private static void createTab(String name, Color color) {
        ProgressIcon icon = new ProgressIcon(color);
        jtp.addTab(name, icon, new ColorPanel(jtp, icon));
    }
}

class ColorPanel extends JPanel implements ActionListener {
    Random rnd = new Random();
    Timer timer = new Timer(1000, this);
    JLabel label = new JLabel("OK!");
    JTabbedPane parent;
    ProgressIcon icon;
    int mask;
    int count;

    public ColorPanel(JTabbedPane parent, ProgressIcon icon) {
        super(true);
        this.parent = parent;
        this.icon = icon;
        this.mask = icon.color.getRGB();
        this.setBackground(icon.color);
        label.setForeground(icon.color);
        this.add(label);
        timer.start();
    }

    public void actionPerformed(ActionEvent e) {
        this.setBackground(new Color(rnd.nextInt() & mask));
        this.icon.update(count += rnd.nextInt(8));
        this.parent.repaint();
    }
}

class ProgressIcon implements Icon {
    int H = 16;
    int W = 3 * H;
    Color color;
    int w;

    public ProgressIcon(Color color) {
        this.color = color;
    }

    public void update(int i) {
        w = i % W;
    }

    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.setColor(color);
        g.fillRect(x, y, w, H);
    }

    public int getIconWidth() {
        return W;
    }

    public int getIconHeight() {
        return H;
    }
}