// IntArray

public class IntArray {
	
	private int[] nums;
	private int size;
	
	public IntArray() {
		this(10);
	}	
	
	public IntArray(int size) {
		nums = new int[size];
		this.size = size;	
	}
	
	public void set(int index, int value) {
		
		if (index >= size) {
			nums = resize(index + 1);
		}
		
		nums[index] = value;
		
	}
	
	public int get(int index) {
		return nums[index];
	}
	
	private int[] resize(int newSize) {
		
		int[] temp = new int[newSize];
		
		int max = Math.min(size, newSize);
		
		for (int i = 0; i < max; i++) {
			temp[i] = nums[i];	
		}
		
		size = newSize;
		
		return temp;
	}
	
	public String toString() {
		java.util.Vector output = new java.util.Vector();
		
		for (int i = 0; i < size; i++) {
			output.add(new Integer(nums[i]));	
		}	
		
		return output.toString();
	}
	
	public static void main(String[] args) {
		IntArray x = new IntArray();
		
		x.set(0, 4);
		x.set(5, 1);
		x.set(15, 15);
		
		System.out.println(x);		
	}
}

// GUI Driver

/*
 * @(#)ArrayMe.java 1.0 03/02/19
 *
 * You can modify the template of this file in the
 * directory ..\JCreator\Templates\Template_1\Project_Name.java
 *
 * You can also create your own project template by making a new
 * folder in the directory ..\JCreator\Template\. Use the other
 * templates as examples.
 *
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class ArrayMe extends JFrame {
	
	JTextField index = new JTextField("0",3);
	JTextField value = new JTextField("0",3);
	
	JLabel iLabel = new JLabel(" index:");
	JLabel vLabel = new JLabel(" value:");
	
	JButton insert = new JButton("Insert");
	JButton reset = new JButton("Reset");
	
	JPanel inputs = new JPanel();
	JTextArea output = new JTextArea();
	JScrollPane scroller = new JScrollPane(output);
	
	IntArray data = new IntArray();
	
	public ArrayMe() {
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
				System.exit(0);
			}
		});
		
		inputs.add(iLabel);
		inputs.add(index);
		inputs.add(vLabel);
		inputs.add(value);
		inputs.add(insert);
		inputs.add(reset);
		
		Container c = getContentPane();
		c.add(inputs, BorderLayout.NORTH);
		c.add(scroller, BorderLayout.CENTER);
		ActionListener insertIt = new InsertListener();
		insert.addActionListener(insertIt);
		index.addActionListener(insertIt);
		value.addActionListener(insertIt);
		reset.addActionListener(new ResetListener());
	}

	public static void main(String args[]) {
		System.out.println("Starting ArrayMe...");
		ArrayMe mainFrame = new ArrayMe();
		mainFrame.setSize(400, 300);
		mainFrame.setTitle("ArrayMe");
		mainFrame.setVisible(true);
	}
	
	private class InsertListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			int loc = Integer.parseInt(index.getText());
			int val = Integer.parseInt(value.getText());
			data.set(loc, val);
			updateOutput();
			index.selectAll();
			value.selectAll();
			index.requestFocus();
		}	
	}
	
	private class ResetListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			data = new IntArray();
			updateOutput();
		}	
	}

	private void updateOutput() {
		output.setText(data.toString());	
	}
}