A Custom JPanel With a Gradient Color Effect Using the Per-Pixel Translucency - Java 2D Graphics

Java examples for 2D Graphics:Gradient

Description

A Custom JPanel With a Gradient Color Effect Using the Per-Pixel Translucency

Demo Code

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;

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

  @Override/*w  w  w. j a va2  s. c om*/
  protected void paintComponent(Graphics g) {
    if (g instanceof Graphics2D) {
      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);
    }
  }
}

public class Main extends JFrame {
  private JButton closeButton = new JButton("Close");

  public Main() {
    super();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setUndecorated(true);
    setBackground(new Color(0, 0, 0, 0));
    setSize(200, 200);
    setLocationRelativeTo(null);
    getContentPane().setLayout(new GridLayout(0, 1));
    add(new TranslucentJPanel());
    add(closeButton);
    closeButton.addActionListener(e -> System.exit(0));
  }

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

Related Tutorials