//Substrings.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class Substrings extends JApplet { JTextField inputNField; JTextArea listArea; java.util.List substringsList; java.util.List sizeDupsList; TreeSet alphaSet; TreeSet[] sizedSets; JRadioButton radioAlphaButton, radioSizeButton; ButtonGroup buttonGroup; JRadioButton radioUniqueButton, radioDupsButton; ButtonGroup buttonGroup2; RadioButtonHandler radioButtonHandler; public void init() { Container container = getContentPane(); int panelRowsSize = 2; container.setLayout( new GridLayout( 1, panelRowsSize) ); JPanel [] panelRows = new JPanel[panelRowsSize]; //left side panel panelRows[0] = new JPanel(); container.add( panelRows[0] ); panelRows[0].setLayout( new GridLayout( 2, 1 ) ); JPanel topleftPanel = new JPanel(); panelRows[0].add( topleftPanel ); JPanel bottomleftPanel = new JPanel(); panelRows[0].add( bottomleftPanel ); bottomleftPanel.setLayout( new GridLayout( 1, 2 ) ); JPanel bottomleftPanelleft = new JPanel(); bottomleftPanel.add( bottomleftPanelleft ); bottomleftPanelleft.setLayout( new GridLayout( 2, 1 ) ); JPanel bottomleftPanelright = new JPanel(); bottomleftPanel.add( bottomleftPanelright ); bottomleftPanelright.setLayout( new GridLayout( 2, 1 ) ); //right side panel panelRows[1] = new JPanel(); panelRows[1].setLayout( new FlowLayout() ); container.add( panelRows[1] ); substringsList = new ArrayList(); //alphaSet = new TreeSet(); Font bigFont = new Font( "Monospaced", Font.BOLD, 16 ); TextFieldHandler handleTextField = new TextFieldHandler(); JLabel inputNLabel = new JLabel( "String" ); inputNLabel.setFont( bigFont ); topleftPanel.add( inputNLabel ); inputNField = new JTextField( 30 ); inputNField.setFont( bigFont ); topleftPanel.add( inputNField ); inputNField.addActionListener( handleTextField ); radioAlphaButton = new JRadioButton( "Alphabetic order" ); bottomleftPanelleft.add( radioAlphaButton ); radioButtonHandler = new RadioButtonHandler(); radioAlphaButton.addItemListener( radioButtonHandler ); radioSizeButton = new JRadioButton( "By size order" ); bottomleftPanelleft.add( radioSizeButton ); radioSizeButton.addItemListener( radioButtonHandler ); buttonGroup = new ButtonGroup(); buttonGroup.add(radioAlphaButton); buttonGroup.add(radioSizeButton); radioUniqueButton = new JRadioButton( "Uniques only" ); bottomleftPanelright.add( radioUniqueButton ); //RadioButtonHandler2 radioButtonHandler2 = new RadioButtonHandler2(); radioUniqueButton.addItemListener( radioButtonHandler ); radioDupsButton = new JRadioButton( "Dups OK" ); bottomleftPanelright.add( radioDupsButton ); radioDupsButton.addItemListener( radioButtonHandler ); buttonGroup2 = new ButtonGroup(); buttonGroup2.add(radioUniqueButton); buttonGroup2.add(radioDupsButton); listArea = new JTextArea( 20, 30 ); Font smallFont = new Font( "Monospaced", Font.BOLD, 12 ); listArea.setFont( smallFont ); JScrollPane listScroll = new JScrollPane( listArea ); panelRows[1].add( listScroll ); } public void start() { inputNField.requestFocusInWindow(); radioAlphaButton.setSelected( true ); //check in handler if start() radioDupsButton.setSelected( true ); } private class TextFieldHandler implements ActionListener { public void actionPerformed( ActionEvent event ) { listArea.setText( "" ); String s = inputNField.getText(); int n = s.length(); substringsList.clear(); for (int i=0; i