import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.SwingUtilities;
 
public class TheSwingError extends JFrame {
 
   Color transparent = new Color( 255, 0, 0, 100 ),
         almostOpaque = new Color( 255, 0, 0, 254 ),
         completelyOpaque = new Color( 255, 0, 0, 255 ),
         opaque = almostOpaque;
 
   public TheSwingError() {
      setUndecorated( true );
      setDefaultCloseOperation( javax.swing.WindowConstants.EXIT_ON_CLOSE );
      setBounds( 10, 10, 500, 500 );
      setBackground( transparent );
      setLayout( null );
 
      JButton colorChooser = new JButton( "opaque = 255,0,0,254" );
      JButton alternate = new JButton( "Transparent" );
      colorChooser.setBounds( 10, 50, 160, 26 );
      alternate.setBounds( 10, 10, 160, 26 );
      add( colorChooser );
      add( alternate );
 
      setVisible( true );
      
      alternate.addMouseListener( new java.awt.event.MouseAdapter() {
         @Override
         public void mouseClicked( java.awt.event.MouseEvent evt ) {
            JButton aux = (JButton) evt.getSource();
            if( aux.getText().equals( "Transparent" ) ) {
               setBackground( opaque );
               aux.setText( "Opaque" );
            }
            else {
               setBackground( transparent );
               aux.setText( "Transparent" );
            }
         }
      } );
      
      colorChooser.addMouseListener( new java.awt.event.MouseAdapter() {
         @Override
         public void mouseClicked( java.awt.event.MouseEvent evt ) {
            JButton aux = (JButton) evt.getSource();
            if( aux.getText().equals( "opaque = 255,0,0,254" ) ) {
               opaque = completelyOpaque;
               aux.setText( "color = 255,0,0,255" );
            }
            else {
               opaque = almostOpaque;
               aux.setText( "opaque = 255,0,0,254" );
            }
         }
      } );
   }
 
   public static void main( String[] args ) {
      SwingUtilities.invokeLater( () -> {
         new TheSwingError();
      } );
   }
} 