package demos.jgears;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.java.games.jogl.*;
import demos.gears.Gears;
/**
* JGears.java
* author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel)
* * This version is equal to Brian Paul's version 1.2 1999/10/21 */ public class JGears { public static void main(String[] args) { JFrame frame = new JFrame("Gear Demo"); frame.getContentPane().setLayout(new BorderLayout()); GLCapabilities caps = new GLCapabilities(); caps.setAlphaBits(8); final GLJPanel drawable = GLDrawableFactory.getFactory().createGLJPanel(caps); drawable.setOpaque(false); drawable.addGLEventListener(new Gears()); JPanel gradientPanel = new JPanel() { public void paintComponent(Graphics g) { ((Graphics2D) g).setPaint(new GradientPaint(0, 0, Color.WHITE, getWidth(), getHeight(), Color.DARK_GRAY)); g.fillRect(0, 0, getWidth(), getHeight()); } }; gradientPanel.setLayout(new BorderLayout()); frame.getContentPane().add(gradientPanel, BorderLayout.CENTER); gradientPanel.add(drawable, BorderLayout.CENTER); final JCheckBox checkBox = new JCheckBox("Transparent", true); checkBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { drawable.setOpaque(!checkBox.isSelected()); } }); frame.getContentPane().add(checkBox, BorderLayout.SOUTH); frame.setSize(300, 300); final Animator animator = new Animator(drawable); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { // Run this on another thread than the AWT event queue to // make sure the call to Animator.stop() completes before // exiting new Thread(new Runnable() { public void run() { animator.stop(); System.exit(0); } }).start(); } }); frame.show(); animator.start(); } }