codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import pack.*;

class Area_by_Gauss_w extends JFrame {
	
	private int numero_vertici;
	private Double area;
	final String descrizione = "<HTML>Con questo piccolo programma si sarà in grado di calcolare l'area di un qualsiasi poligono avendo tutte le coordinate
 dei suoi punti rispetto a un generico piano cartesiano.
 NB= L'unità di misura del risultato sarà come quella inserita e ovviamente elevata alla seconda.</HTML>";
	private JTextField Est;
	private JTextField Nord;
	private int n;
	private Poligono figura;
	private JFrame p_ins;
	
	public static void main(String args[]){
		Area_by_Gauss_w risultato = new Area_by_Gauss_w();
	}

	public Area_by_Gauss_w(){
		super("Area di Gauss");
		
		JOptionPane.showMessageDialog(null, this.descrizione, "Descrizione Programma", JOptionPane.INFORMATION_MESSAGE);
		
		this.setNVertici();
		Poligono figura = new Poligono(this.numero_vertici);
		
		JOptionPane.showMessageDialog(null, "Bene ora inserisci i valori delle coordinate di tutti i punti", "Info", JOptionPane.INFORMATION_MESSAGE);
		//
	for(int n = 0; n < figura.getNumeroVertici(); n++) {
		p_ins = new JFrame("Inserisci le coordinate del punto "+n);
		p_ins.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		
		GridLayout Layout_input = new GridLayout(5,1);
			
		JDialog input = new JDialog(p_ins, p_ins.getTitle(), true);
		input.setLayout(Layout_input);
		input.add(new JLabel("Inserisci prima la Coordinata Est (X) e poi Nord (Y) del punto "+n+":"));
			Est = new JTextField("0.00");
			Nord = new JTextField("0.00");
			
			JButton Reimposta = new JButton("Reimposta");
			Reimposta.addActionListener(new Reset());
				
			JButton Inserisci = new JButton("Inserisci!");
			Inserisci.addActionListener(new Inserisci());
		input.add(Est);
		input.add(Nord);
		input.add(Inserisci);
		input.add(Reimposta);
				
		input.pack();
		input.setVisible(true);
	}
		figura.setArea_by_Gauss();
BorderLayout Layout1 = new BorderLayout();
		super.setLayout(Layout1);
		super.add(new JLabel(this.descrizione), BorderLayout.NORTH);
		super.add(new JLabel("Area della Figura: "+figura.getArea()), BorderLayout.CENTER);
		super.pack();
		super.setVisible(true);
	}
	
	public void setNVertici() {
		this.numero_vertici = leggiNumero_Integer_from_JOptionPane();
		//controllo
		if (this.numero_vertici < 3) {
		//System.out.println("Una figura ha almeno 3 vertici e corrisponde a un triangolo..reinserisci il numero di vertici!");
			setNVertici();
		}
	}
	
	private int leggiNumero_Integer_from_JOptionPane(){		
		while(true){
			try {
				String valore = JOptionPane.showInputDialog("Inserire per cortesia il numero di vertici della Figura.");
				return Integer.parseInt(valore);
			} catch (NumberFormatException exc){
				JOptionPane.showMessageDialog(null, "Il valore inserito non è un numero. Per cortesia riprova", "Errore", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
	private Double leggiDouble_from_String(String s) {
		while(true) {
			try{
				Double n = Double.parseDouble(s);
				return n;
			} catch (NumberFormatException exc) {
				JOptionPane.showMessageDialog(null, "Il valore inserito non è un numero. Per cortesia riprova", "Errore", JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
	//Ascoltatori
	private class Reset implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			Est.setText("0.00");
			Nord.setText("0.00");
		}
	}
	
	private class Inserisci implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			figura.setCoordinateVertice(n,leggiDouble_from_String(Est.getText()),leggiDouble_from_String(Nord.getText()));
			//new WindowEvent(p_ins,WindowEvent.WINDOW_CLOSED); (non funz)
			//new WindowEvent(p_ins,202); (non funz)
			//JFrame.EXIT_ON_CLOSE; (non funz)
			//p_ins.setVisible(false); (non funz)
		}
	}
	
}
come far funzionare questo codice???? in particolar modo: vedere il risultato e chiudere una finestra e inserire i dati una volta cliccato il Bottone "Inserisci" con l'ascoltatore Inserisci