[ Home ]
Notes on Umpires
Double-buffering (as an application of inheritance).
Exercise: explain what happens here and why and how this is related to applets:
Code for application of threads in teaching CS1:frilled.cs.indiana.edu%cat Ionesco.java class Horse { int numberOfLegs = 4; void greet() { talk(); } void talk() { System.out.println("Howdy!"); } } class Unicorn extends Horse { Horn h; void talk() { System.out.println("Bonjour!"); } } class Ionesco { public static void main(String[] args) { Horse a = new Unicorn(); a.greet(); } } class Horn { } frilled.cs.indiana.edu%javac Ionesco.java frilled.cs.indiana.edu%java Ionesco Bonjour! frilled.cs.indiana.edu%
frilled.cs.indiana.edu%ls -l total 18 -rw-r--r-- 1 dgerman faculty 473 Nov 1 07:59 ActionList.java -rw-r--r-- 1 dgerman faculty 2376 Nov 1 07:59 AppletFrame.java -rw-r--r-- 1 dgerman faculty 1355 Nov 1 07:59 Dance.java -rw-r--r-- 1 dgerman faculty 854 Nov 1 07:59 NoFlickerApplet.java -rw-r--r-- 1 dgerman faculty 2261 Nov 1 07:59 One.java -rw-r--r-- 1 dgerman faculty 3987 Nov 1 07:59 Penguin.java -rw-r--r-- 1 dgerman faculty 4016 Nov 1 07:59 Rink.java frilled.cs.indiana.edu%Code for
SliderTest
:
import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.SwingConstants; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; public class SliderTest { public static void main(String[] args) { SliderFrame frame = new SliderFrame(); frame.setTitle("SliderTest"); frame.show(); } } class SliderFrame extends JFrame { public SliderFrame() { final int DEFAULT_FRAME_WIDTH = 300; final int DEFAULT_FRAME_HEIGHT = 300; setSize(DEFAULT_FRAME_WIDTH, DEFAULT_FRAME_HEIGHT); addWindowListener(new WindowCloser()); colorPanel = new JPanel(); ColorListener listener = new ColorListener(); redSlider = new JSlider(0, 100, 100); redSlider.addChangeListener(listener); greenSlider = new JSlider(0, 100, 70); greenSlider.addChangeListener(listener); blueSlider = new JSlider(0, 100, 100); blueSlider.addChangeListener(listener); JPanel southPanel = new JPanel(); southPanel.setLayout(new GridLayout(3, 2)); southPanel.add(new JLabel("Red", SwingConstants.RIGHT)); southPanel.add(redSlider); southPanel.add(new JLabel("Green", SwingConstants.RIGHT)); southPanel.add(greenSlider); southPanel.add(new JLabel("Blue", SwingConstants.RIGHT)); southPanel.add(blueSlider); Container contentPane = getContentPane(); contentPane.add(colorPanel, "Center"); contentPane.add(southPanel, "South"); setSampleColor(); } public void setSampleColor() { float red = 0.01F * redSlider.getValue(); float green = 0.01F * greenSlider.getValue(); float blue = 0.01F * blueSlider.getValue(); colorPanel.setBackground(new Color(red, green, blue)); colorPanel.repaint(); } private JPanel colorPanel; private JSlider redSlider; private JSlider greenSlider; private JSlider blueSlider; private class ColorListener implements ChangeListener { public void stateChanged(ChangeEvent event) { setSampleColor(); } } private class WindowCloser extends WindowAdapter { public void windowClosing(WindowEvent event) { System.exit(0); } } }
Here's another simple example.