Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Paint;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Main extends JFrame {
    public Main() {
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        // Make sure the frame is undecorated
        this.setUndecorated(true);
        this.setBackground(new Color(0, 0, 0, 0));
        this.setSize(200, 200);
        // Center it on the screen
        this.setLocationRelativeTo(null);

        this.getContentPane().setLayout(new GridLayout(0, 1));
        this.add(new TranslucentJPanel(Color.RED));
        JButton closeButton = new JButton("Close");
        this.add(closeButton);
        closeButton.addActionListener(e -> System.exit(0));
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            Main frame = new Main();
            frame.setVisible(true);
        });
    }
}

class TranslucentJPanel extends JPanel {
    private int red = 240;
    private int green = 240;
    private int blue = 240;

    public TranslucentJPanel(Color bgColor) {
        this.red = bgColor.getRed();
        this.green = bgColor.getGreen();
        this.blue = bgColor.getBlue();
    }

    @Override
    protected void paintComponent(Graphics g) {
        int width = this.getWidth();
        int height = this.getHeight();
        float startPointX = 0.0f;
        float startPointY = 0.0f;
        float endPointX = width;
        float endPointY = 0.0f;
        Color startColor = new Color(red, green, blue, 255);
        Color endColor = new Color(red, green, blue, 0);

        Paint paint = new GradientPaint(startPointX, startPointY, startColor, endPointX, endPointY, endColor);

        Graphics2D g2D = (Graphics2D) g;
        g2D.setPaint(paint);
        g2D.fillRect(0, 0, width, height);

    }
}