Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Originariamente inviato da unomichisiada
    Bravo, quella discussione non riuscivo più a trovarala nemmeno io.Per il setVisible hai già risposto tu.
    Non era quella però che intendevo. Quella soluzione ha il problema di andare in overflow con numeri molto grandi.Ce n'e un'altra in cui si parsa la stringa con le espressioni regolari e si scartano le stringhe che non contengono solo cifre,in quella ho postato anche io.Ma non la trovo più
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  2. #12
    Azz...mi sembrava quella...ho capito a quale ti riferisci, l'ho usato anche io quel metodo...
    Era questa:

    http://forum.html.it/forum/showthrea...ht=java+numeri

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  3. #13
    Originariamente inviato da Matteo982
    Azz...mi sembrava quella...ho capito a quale ti riferisci, l'ho usato anche io quel metodo...
    Era questa:

    http://forum.html.it/forum/showthrea...ht=java+numeri

    Ciao.
    Esatto! La soluzione di quella discussione va modificata legegrmente se si vuole consentire l'inserimento anche del punto, del separatore decimale e del segno meno. Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #14
    ora lasciando da parte il discorso della verifica che il valore inserito sia un numero (ammettiamo che l'utente scriva solo giusto) con:
    codice:
    p_ins.setVisible(false);
    non funziona...la finestra resta aperta..

  5. #15
    Originariamente inviato da zannas
    ora lasciando da parte il discorso della verifica che il valore inserito sia un numero (ammettiamo che l'utente scriva solo giusto) con:
    codice:
    p_ins.setVisible(false);
    non funziona...la finestra resta aperta..
    Questo è strano sbagli sicuramente qualcosa.Ha dato uno sguardo al codice di esempio ch ti ho postato?
    Comunque postami (TUTTO) il codice su cui stai lavorando così provo io e vediamo.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #16

  7. #17
    codice:
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;
    
    import pack.Poligono;
    
    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();
    		figura = new Poligono(new Integer(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);
    		
    		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 Controlla());
    			Inserisci.addActionListener(new Inserisci());
    		input.add(Est);
    		input.add(Nord);
    		input.add(Inserisci);
    		input.add(Reimposta);
    		p_ins.getRootPane().setDefaultButton(Inserisci);
    		input.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    				
    		input.pack();
    		input.setVisible(true);
    	}
    	//esempio/////////////////////////////////////////////
    	/*	figura.setCoordinateVertice(0,0.0,0.0);
    		figura.setCoordinateVertice(1,15.0,15.0);
    		figura.setCoordinateVertice(2,2.0,2.0);*/
    	//dati per la tabella
    		Object[][] dati;
    		String[] txt_colonne;
    		dati = new Object[figura.getNumeroVertici()][3];
    		txt_colonne = new String[3];
    		txt_colonne[0] = "Nome Punto";
    		txt_colonne[1] = "Est";
    		txt_colonne[2] = "Nord";
    	
    	for(int n = 0; n < figura.getNumeroVertici(); n++) {
    		dati[n][0] = "Punto "+n;
    		dati[n][1] = figura.vertice[n].get_est();
    		dati[n][2] = figura.vertice[n].get_nord();
    	}
    		JTable tabella = new JTable(dati,txt_colonne);
    		//tabella.setFocusable(false); (non funz)
    		//tabella.setEditingRow(-1); (non funz)
    		
    		figura.setArea_by_Gauss();		
    		
    		BorderLayout Layout1 = new BorderLayout();
    		super.setLayout(Layout1);
    		super.add(new JLabel(this.descrizione), BorderLayout.NORTH);
    		super.add(new JLabel("<HTML>Area della Figura: 
    "+figura.getArea()+"</HTML>"), BorderLayout.SOUTH);
    		super.add(tabella, BorderLayout.WEST);
    		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 new Double(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) 
            {
                double est = 0;
                double nord = 0;
                try
                {
                    est = Double.parseDouble(Est.getText());
                    nord = Double.parseDouble(Nord.getText());
                }
                catch (NumberFormatException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
    			figura.setCoordinateVertice(n,new Double(est),new Double(nord));
    			//new WindowEvent(p_ins,WindowEvent.WINDOW_CLOSED);
    			//new WindowEvent(p_ins,202);
    			//JFrame.EXIT_ON_CLOSE;
    			p_ins.setVisible(false);
    		}
    	}
    	private class Controlla implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			leggiDouble_from_String(Est.getText());
    			leggiDouble_from_String(Nord.getText());
    		}
    	}
    }
    Alcuni commenti:
    -Dovresti gestire meglio le eccezioni che parseDouble può lanciare.
    -usi Double e Integer in luogo di int e double. Questa è una buona cosa finche ti limiti a fare in modo che le interfacce dei metodi (parametri e valori di ritorno) usino questi wrappers ma per lavorare all'interno dei metodi (somme,moltiplicazioni,differenze) usa i tipi primitivi,ti semplifichi la vita fidati..
    -il tuo codice era pieno di errori di conversione da double a Double ed altri che non permettevano nemmeno la compilazione, conme hai fatto a vedere che la finestra non si chiudeva?????
    -Se quello che vuoi ottenere e che la finestra per l'inserimento delle coordinate si chida per lasciar posto alla successiva una volta premuto "inserisci" a me funziona benissimo (una volta corretti gli errori di cui sopra)!
    Non so che dirti.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.