//RandomLines.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class RandomLines extends JApplet implements ActionListener { private JLabel linesLabel, equalLengthLabel, maxLengthLabel; private JTextField linesField, equalLengthField, maxLengthField; private JButton againButton; public void init() { Container container = getContentPane(); container.setLayout( new FlowLayout() ); linesLabel = new JLabel( "Number of lines" ); linesField = new JTextField( 4 ); container.add( linesLabel ); container.add( linesField ); equalLengthLabel = new JLabel( "All equal length?" ); equalLengthField = new JTextField( 4 ); container.add( equalLengthLabel ); container.add( equalLengthField ); maxLengthLabel = new JLabel( "Max. length" ); maxLengthField = new JTextField( 4 ); container.add( maxLengthLabel ); container.add( maxLengthField ); againButton = new JButton( "Again! Again!" ); container.add( againButton ); againButton.addActionListener( this ); } public void actionPerformed( ActionEvent event ) { if ( event.getSource() == againButton ) repaint(); } public void paint( Graphics g ) { int x1, y1, x2, y2; double angle; int lines; int length; int maxLength; boolean equalLengthLines; super.paint( g ); //random point (x1,y1) then random point in circle of maxLength radius //around it //if equalLengthLines is true: length = Integer.parseInt(maxLengthField.getText()); maxLength = Integer.parseInt(maxLengthField.getText()); lines = Integer.parseInt(linesField.getText()); if (equalLengthField.getText().equals("yes")) equalLengthLines = true; else equalLengthLines = false; for (int i=1; i<=lines; i++) { x1 = (int)(Math.random() * getWidth()); y1 = (int)(Math.random() * getHeight()); angle = Math.random() * 2 * Math.PI; //radians if (!equalLengthLines) length = (int)(Math.random() * maxLength); x2 = (int)(Math.cos(angle) * length + x1); y2 = (int)(Math.sin(angle) * length + y1); g.drawLine(x1,y1,x2,y2); } /* //test if draws to edge or draws nothing //draws to edges! g.drawLine(10,10,-10,-10); g.drawLine(700,100,900,100); */ } }