Copyright Derek O'Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.
GlassPane_Overlay Example (Run Applet)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GlassPane_Overlay extends JApplet
{
@Override
public void init()
{
GlassPane glassPane = new GlassPane();
this.setContentPane(new View(glassPane));
this.setGlassPane(glassPane);
}
public class View extends JPanel implements ItemListener
{
private JPanel glassPane;
private final JRadioButton on = new JRadioButton("On", false);
private final JRadioButton off = new JRadioButton("Off", true);
public View(JPanel glassPane)
{
super();
this.glassPane = glassPane;
// set up a menuBar and a popupMenu
// to show that menuBars display behind the glasspane
// and popupMenus display in front of the glasspane
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
menuBar.add(new JMenu("Menu bar is behind GlassPane"));
JPopupMenu popupMenu = new JPopupMenu();
popupMenu.add(new JMenu("Popup menu is in front of GlassPane"));
popupMenu.show(this.getRootPane(), 100, 200);
// Set the glass pane
// setGlassPane(this.glassPane);
glassPane.setOpaque(false);
glassPane.setVisible(true);
//Group the radio buttons.
final ButtonGroup group = new ButtonGroup();
group.add(this.on);
group.add(this.off);
// place the radio buttons onto the Applet's panel
this.add(this.on);
this.add(this.off);
this.on.addItemListener(this);
this.off.addItemListener(this);
}
@Override
public void itemStateChanged(ItemEvent e)
{
final Object source = e.getSource();
if (source == this.on)
{
this.glassPane.setVisible(true);
}
else if (source == this.off)
{
this.glassPane.setVisible(false);
}
}
}
private final class GlassPane extends JPanel
{
@Override
public void paintComponent(Graphics g)
{
g.setColor(Color.blue);
g.drawOval(0, 0, getWidth() - 1, getHeight() - 1);
// draw over the two radio buttons
g.setColor(Color.red);
g.drawOval(15, 15, getWidth() - 31, getHeight() - 31);
}
}
}
GlassPane_Translucent_Demo Example (Run Applet)
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
public class GlassPane_Translucent_Demo extends JApplet
{
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel implements ItemListener
{
private final TranslucentGlassPane glassPane = new TranslucentGlassPane();
private final JRadioButton on = new JRadioButton("On", true);
private final JRadioButton off = new JRadioButton("Off", false);
public View()
{
super();
final JMenuBar menuBar = new JMenuBar();
final JLabel koalaBear = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("images/koala.jpg")));
// Set the glass pane
setGlassPane(this.glassPane);
this.glassPane.setOpaque(false);
this.glassPane.setVisible(true);
//Group the radio buttons.
final ButtonGroup group = new ButtonGroup();
group.add(this.on);
group.add(this.off);
// place the radio buttons onto the Applet's panel
this.add(this.on);
this.add(this.off);
this.add(koalaBear);
this.on.addItemListener(this);
this.off.addItemListener(this);
}
@Override
public void itemStateChanged(ItemEvent e)
{
final Object source = e.getSource();
if (source == this.on)
{
this.glassPane.setVisible(true);
}
else if (source == this.off)
{
this.glassPane.setVisible(false);
}
}
}
public class TranslucentGlassPane extends JPanel
{
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
final BufferedImage bImg = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
final Graphics2D g2d = bImg.createGraphics();
for (int x = 0; x < getWidth(); x++)
{
for (int y = 0; y < getHeight(); y++)
{
bImg.setRGB(x, y, new Color(255, 255, 255, 200).getRGB()); // alpha set less than 255
}
}
g.drawImage(bImg, 0, 0, getWidth(), getHeight(), this);
}
}
}
GlassPane_BlockMouse Example (Run Applet)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GlassPane_BlockMouse_Demo extends JApplet
{
@Override
public void init()
{
final GlassPane glassPane = new GlassPane();
this.setContentPane(new View(glassPane));
this.setGlassPane(glassPane);
}
public class View extends JPanel implements ItemListener
{
private JPanel glassPane;
private final JRadioButton on = new JRadioButton("On", false);
private final JRadioButton off = new JRadioButton("Off", true);
public View(JPanel glassPane)
{
super();
this.glassPane = glassPane;
// set up a menuBar and a popupMenu
// to show that menuBars display behind the glasspane
// and popupMenus display in front of the glasspane
final JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
menuBar.add(new JMenu("Menu bar is behind GlassPane"));
final JPopupMenu popupMenu = new JPopupMenu();
popupMenu.add(new JMenu("Popup menu is in front of GlassPane"));
popupMenu.show(this.getRootPane(), 100, 200);
// Set the glass pane
// setGlassPane(this.glassPane);
glassPane.setOpaque(false);
glassPane.setVisible(true);
//Group the radio buttons.
final ButtonGroup group = new ButtonGroup();
group.add(this.on);
group.add(this.off);
// place the radio buttons onto the Applet's panel
this.add(this.on);
this.add(this.off);
this.on.addItemListener(this);
this.off.addItemListener(this);
}
@Override
public void itemStateChanged(ItemEvent e)
{
final Object source = e.getSource();
if (source == this.on)
{
this.glassPane.setVisible(true);
}
else if (source == this.off)
{
this.glassPane.setVisible(false);
}
}
}
class GlassPane extends JPanel implements MouseListener
{
private boolean mouseClicked = false;
private int x = 0;
private int y = 0;
GlassPane()
{
super();
this.addMouseListener(this);
}
@Override
public void paintComponent(Graphics g)
{
if (this.mouseClicked)
{
g.setColor(Color.red);
g.fillOval(this.x - 10, this.y - 10, 20, 20);
}
}
@Override
public void mouseClicked(MouseEvent me)
{
}
@Override
public void mousePressed(MouseEvent e)
{
this.mouseClicked = true;
this.x = e.getX();
this.y = e.getY();
this.repaint();
}
@Override
public void mouseReleased(MouseEvent me)
{
}
@Override
public void mouseEntered(MouseEvent me)
{
}
@Override
public void mouseExited(MouseEvent me)
{
}
}
}
Copyright Derek O' Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.