setGlassPane JRootPane JLayeredPane transparência [resolvido]

Como faço para que o bt (JButton) também tenha seu corpo desenhado?
Isso é possivel de forma simples?

vejam o codigo:


import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JPanel;

 
public class DrawMain extends javax.swing.JFrame
{
	
	
	public static class DrawPanel extends JPanel
	{

		@Override
		protected void paintComponent(Graphics g)
		{
			super.paintComponent(g);
			g.setColor(Color.orange);
			g.drawLine(0,0,80,80);
		}
		
	} 

	public DrawMain()
	{
		initComponents();
	}
 
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    } 
 
	public static void main(String args[])
	{ 
		java.awt.EventQueue.invokeLater(new Runnable()
		{

			public void run()
			{
				DrawMain f = new DrawMain();
				DrawPanel d = new DrawPanel();
				d.setLayout(null);
				JButton bt = new JButton("b");
				d.add(bt);
				bt.setBounds(10, 10, 40, 40) ;
				f.setContentPane( d ) ;
				f.setVisible(true);
			}
		});
	} 
}

Parece que encontrei a solução: setGlassPane


http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JPanel;



public class DrawMain extends javax.swing.JFrame
{
	
	
	public static class DrawPanel extends JPanel
	{

		@Override
		protected void paintComponent(Graphics g)
		{
			super.paintComponent(g);
			g.setColor(Color.orange);
			g.drawLine(0,0,80,80);
		}
		
	}

	public DrawMain()
	{
		initComponents();
	}


    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }


	public static void main(String args[])
	{ 
		java.awt.EventQueue.invokeLater(new Runnable()
		{

			public void run()
			{
				DrawMain f = new DrawMain();
				DrawPanel d = new DrawPanel();
				JPanel p = new JPanel();
				p.setLayout(null);
				JButton bt = new JButton("b"); 
				p.add(bt);
				bt.setBounds(10, 10, 40, 40) ;
				f.setContentPane( p ) ;
				
				f.setGlassPane( d ) ;
				d.setLayout(null);
				d.setVisible(true);
				d.setOpaque(false);
				
				f.setVisible(true);
			}
		});
	}
}

O primeiro codigo encontrado funciona apenas para JFrames. Absurdo isso, mas fazer o que… Lendo mais a respeito consegui fazer o mesmo mas com o JRoot (No lugar de JPanel):



import java.awt.Color;
import java.awt.Graphics; 
import javax.swing.JButton;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;



public class DrawMain extends javax.swing.JFrame
{
	
	
	public static class DrawPanel extends JPanel
	{

		@Override
		protected void paintComponent(Graphics g)
		{
			super.paintComponent(g);
			g.setColor(Color.orange);
			g.drawLine(0,0,80,80);
		}
		
	}


	public DrawMain()
	{
		initComponents();
	}

	
                        
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }




	public static void main(String args[])
	{ 
		java.awt.EventQueue.invokeLater(new Runnable()
		{

			public void run()
			{
				DrawMain f = new DrawMain();				
				JRootPane conteudo = new JRootPane(); 
				JLayeredPane l1 = new JLayeredPane();
				
				f.setContentPane(conteudo);
				
				JPanel p1 = new JPanel(); 
				DrawPanel p2 = new DrawPanel(); 				
				 
				p1.setBounds(0, 0, 230, 230) ;
				p2.setBounds(0, 0, 230, 230) ;
				
				
				conteudo.setGlassPane(p2); 
				l1.add(p1);
				conteudo.setLayeredPane(l1); 
				
				
				JButton bt = new JButton("b"); 
				bt.setBounds(30, 30, 40, 40) ;
				p1.add(bt);
				
				 
				 
				 
				p1.setLayout(null);
				p1.setVisible(true);
				p1.setOpaque(false);
				 
				p2.setLayout(null);
				p2.setVisible(true);
				p2.setOpaque(false); 
				
				
				f.setVisible(true);
			}
		});
	}                
}