Paint on glass pane : GlassPane « Swing JFC « Java

Paint on glass pane


import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class Main extends JComponent {
  public static void main(String[] args) {

    JFrame frame = new JFrame();

    final JButton activate = new JButton("Show");


    final Main glass = new Main(frame);

    activate.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {

  JFrame frame;

  Point cursor;

  public Main(JFrame frame) {
    this.frame = frame;
    cursor = new Point();
    this.addMouseMotionListener(new MouseMotionAdapter() {
      public void mouseMoved(MouseEvent evt) {
        cursor = new Point(evt.getPoint());
    this.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent evt) {

  public void paint(Graphics g) {
    Container root = frame.getContentPane();
    myPaint(root, g);

  private void myPaint(Component comp, Graphics g) {
    int x = comp.getX();
    int y = comp.getY();
    g.translate(x, y);
    cursor.translate(-x, -y);
    if (comp.contains(cursor)) {
      String cls_name = comp.getClass().getName();
      g.drawString(cls_name, 0, 10);
    if (comp instanceof Container) {
      Container cont = (Container) comp;
      for (int i = 0; i < cont.getComponentCount(); i++) {
        Component child = cont.getComponent(i);
        myPaint(child, g);

    cursor.translate(x, y);
    g.translate(-x, -y);



Related examples in the same category

1.Show how a glass pane can be used to block mouse (and key!) eventsShow how a glass pane can be used to block mouse (and key!) events
2.Demonstrate use of GlassPaneDemonstrate use of GlassPane
3.Block mouse and key events in an application
4.Replace existing GlassPane