import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Random extends JApplet { private SmallButtonPanel panel1; private BigButtonPanel panel2; private SliderPanel panel3; private DrawPanel panel4; private int panelchoice = 0, y = 0; public void init ( ) { setBackground ( Color.black ); Container contentPane = getContentPane(); contentPane.setLayout ( new GridLayout ( 2, 2, 5, 5 ) ); panel1 = new SmallButtonPanel ( ); contentPane.add ( panel1 ); panel2 = new BigButtonPanel ( ); contentPane.add ( panel2 ); panel3 = new SliderPanel ( ); contentPane.add ( panel3 ); panel4 = new DrawPanel ( ); contentPane.add ( panel4 ); } public Insets getInsets ( ) { return new Insets ( 5, 5, 5, 5 ); } class SmallButtonPanel extends JPanel implements ActionListener { public SmallButtonPanel ( ) { setBackground ( Color.blue ); JButton small = new JButton ( " Random Rectangle " ); small.addActionListener ( this ); this.add ( small ); } public void actionPerformed ( ActionEvent evt ) { String command = evt.getActionCommand(); if ( command.equals ( " Random Rectangle " ) ) { panelchoice = 1; panel4.repaint ( ); } } } class BigButtonPanel extends JPanel implements ActionListener { public BigButtonPanel ( ) { setLayout(new BorderLayout()); setBackground ( Color.cyan ); JButton big = new JButton ( " Random Line " ); big.addActionListener ( this ); this.add ( big, BorderLayout.CENTER ); } public void actionPerformed ( ActionEvent evt ) { String command = evt.getActionCommand(); if ( command.equals ( " Random Line " ) ) { panelchoice = 2; panel4.repaint ( ); } } } class SliderPanel extends JPanel implements ChangeListener { JSlider slide; public SliderPanel ( ) { setLayout(new BorderLayout()); setBackground ( Color.magenta ); slide = new JSlider ( 0, 225, 100 ); slide.setOrientation ( JSlider.VERTICAL ); slide.addChangeListener ( this ); this.add ( slide, BorderLayout.EAST ); } public void stateChanged ( ChangeEvent e ) { if ( e.getSource() == slide ) { panelchoice = 3; y = slide.getValue ( ); panel4.repaint ( ); } } } class DrawPanel extends JPanel { private int x, otherx, othery; public DrawPanel ( ) { setBackground ( Color.yellow ); } public void paintComponent ( Graphics g ) { super.paintComponent ( g ); if ( panelchoice == 1 ) { x = (int)(Math.random ( ) * ( getWidth ( ) - 20 ) ); y = (int)(Math.random ( ) * ( getHeight ( ) - 20 ) ); g.setColor ( Color.green ); g.fillRect ( x, y, 20, 20 ); } else if ( panelchoice == 2 ) { x = (int)(Math.random ( ) * getWidth ( ) ); y = (int)(Math.random ( ) * getHeight ( ) ); otherx = (int)(Math.random ( ) * getWidth ( ) ); othery = (int)(Math.random ( ) * getHeight ( ) ); g.setColor ( Color.blue ); g.drawLine ( x, y, otherx, othery ); } else if ( panelchoice == 3 ) { x = getWidth ( ) / 2; g.setColor ( Color.black ); g.fillOval ( x, 225 - y, 20, 20 ); } } } }