import javax.swing.*; import java.awt.event.*; import java.awt.BorderLayout; import java.awt.Toolkit; import java.util.NoSuchElementException; public class MapIteratorView extends javax.swing.JFrame implements ActionListener { private MapIterator iter; private JLabel hasNext; private JTextField key; private JTextField value; public MapIteratorView( MapIterator i ) { super( "Iterator" ); iter = i; setDefaultCloseOperation( DISPOSE_ON_CLOSE ); JPanel buttons = new JPanel(); JButton nextBtn = new JButton( "next" ); buttons.add( nextBtn ); nextBtn.addActionListener( this ); JButton removeBtn = new JButton( "remove" ); buttons.add( removeBtn ); removeBtn.addActionListener( this ); JButton setValueBtn = new JButton( "setValue" ); buttons.add( setValueBtn ); setValueBtn.addActionListener( this ); JButton closeBtn = new JButton( "close" ); buttons.add( closeBtn ); closeBtn.addActionListener( this ); getContentPane().add( buttons, BorderLayout.NORTH ); JPanel dataPanel = new JPanel( new BorderLayout() ); JPanel nextPanel = new JPanel(); JLabel nextLabel = new JLabel( "Has Next:" ); nextPanel.add( nextLabel ); hasNext = new JLabel( iter.hasNext() ? "TRUE " : "FALSE " ); nextPanel.add( hasNext ); dataPanel.add( nextPanel, BorderLayout.WEST ); JPanel keyPanel = new JPanel(); JLabel keyLabel = new JLabel( "Key:" ); keyPanel.add( keyLabel ); key = new JTextField( 12 ); keyPanel.add( key ); dataPanel.add( keyPanel, BorderLayout.CENTER ); JPanel valuePanel = new JPanel(); JLabel valueLabel = new JLabel( "Value:" ); valuePanel.add( valueLabel ); value = new JTextField( 12 ); valuePanel.add( value ); dataPanel.add( valuePanel, BorderLayout.EAST ); getContentPane().add( dataPanel, BorderLayout.SOUTH ); pack(); setVisible( true ); } public void actionPerformed( ActionEvent e ) { String command = e.getActionCommand(); if ( command.equals( "close" ) ) { doClose(); return; } else if ( command.equals( "next" ) ) doNext(); else if ( command.equals( "remove" ) ) doRemove(); else if ( command.equals( "setValue" ) ) doSetValue(); updateView(); } private void doClose() { setVisible( false ); dispose(); } private void doNext() { try { key.setText( (String) iter.next() ); value.setText( (String) iter.getValue() ); } catch ( NoSuchElementException e ) { Toolkit.getDefaultToolkit().beep(); } } private void doRemove() { try { key.setText( null ); value.setText( null ); iter.remove(); } catch ( IllegalStateException e ) { Toolkit.getDefaultToolkit().beep(); } } private void doSetValue() { try { value.setText( (String) iter.setValue( value.getText() )); } catch ( IllegalStateException e ) { Toolkit.getDefaultToolkit().beep(); } } private void updateView() { hasNext.setText( iter.hasNext() ? "TRUE " : "FALSE " ); } }