All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jidesoft.swing.TransparentComponentWrapper Maven / Gradle / Ivy

/*
 * @(#)TransparentComponentWrapper.java
 *
 * 2002 - 2012 JIDE Software Incorporated. All rights reserved.
 * Copyright (c) 2005 - 2012 Catalysoft Limited. All rights reserved.
 */
package com.jidesoft.swing;

import javax.swing.*;
import java.awt.*;

/**
 * This is a wrapper component for containing another component that uses a transparent (or translucent background).
 * 

* This class is a solution to a problem that may be encountered in Swing when using transparency in the background of a * component. The problem is that when you want to use a background colour with transparency, you need to set the opaque * property of the component to be false to force the opaque parent components to be painted first. The catch is that if * the opaque property is set to false, the component's background may not be painted at all - so you lose the * transparency effect you wanted to achieve. *

* A component that uses a transparent background can be wrapped by this class, which has opaque set to false (to ensure * that the opaque parents are painted first) and also takes on the responsibility of painting the background of the * wrapped component. */ public class TransparentComponentWrapper extends JComponent { private JComponent delegate; public TransparentComponentWrapper(JComponent delegate) { super(); this.delegate = delegate; setOpaque(false); delegate.setOpaque(false); setLayout(new BorderLayout()); add(delegate, BorderLayout.CENTER); } /** * Paints the background of this component using the background colour of the delegate */ @Override public void paintComponent(Graphics g) { Dimension size = getSize(); g.setColor(delegate.getBackground()); g.fillRect(0, 0, size.width, size.height); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy