import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; /** * This program is a Java application showing a single slider and drawing * a window frame with a blind adjustable using the slider. * */ public class WindowBlind extends JFrame implements ChangeListener { /** * This is the slider that appears in the display. */ private JSlider slider; /** * This is the panel that is drawn on. */ private JPanel panel; /** * The main method is the main action for the WindowBlind program. * * @param args The launch arguments (though none are required). */ public static void main (String[] args) { WindowBlind frame = new WindowBlind(); frame.setSize(400,400); frame.createGUI(); frame.setVisible(true); } // end of main /** * The createGUI method is called by the main method * to set up the graphical user interface. */ private void createGUI() { // Set up main window characteristics setDefaultCloseOperation(EXIT_ON_CLOSE); Container window = getContentPane(); window.setLayout(new FlowLayout() ); // Create the adjustable slider slider = new JSlider(JSlider.VERTICAL,0,100,0); window.add(slider); slider.addChangeListener(this); // Create the panel for drawing on panel = new JPanel(); panel.setPreferredSize(new Dimension(300, 300)); panel.setBackground(Color.white); window.add(panel); } // end of createGUI /** * The stateChanged method is called automatically * when the slider is adjusted. * * @param event This brings information about the slider * adjustment event. This information is * ignored in this application as we know which slider * must have been adjusted! */ public void stateChanged(ChangeEvent e) { Graphics paper = panel.getGraphics(); int sliderValue = slider.getValue(); // First erase the drawing on the paper paper.setColor(Color.white); paper.fillRect(0, 0, 300, 300); drawWindow(paper, Color.green, 30, 80, sliderValue); drawWindow(paper, Color.red, 120, 80, sliderValue); } // end of stateChanged private void drawWindow(Graphics paper, Color c, int x, int y, int level) { paper.setColor(c); paper.fillRect(x, y, 60, level); paper.setColor(Color.black); paper.drawRect(x, y, 60, 100); } } // end of WindowBlind