Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [java] chiudere finestra con JButton passando per Ascoltatore

    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

  2. #2
    Con qualche informazione in più tipo che problemi da adesso e sul contesto forse si riesce a risolvere meglio e senza mettergi 3 ore per capire tutto dal codice!

    Illuminaci!

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

    Neverland - Il mio Forum

  3. #3
    praticamente vorrei che quando io clicco sul Bottone "Inserisci" inserisse i valori presi dalle JTextField, e chiudesse la finestra aperta. Come faccio a chiudere la finestra da un bottone?? Inoltre...come faccio a verificare che il testo inserito nelle 2 JTextField siano numeri?

  4. #4
    Originariamente inviato da zannas
    praticamente vorrei che quando io clicco sul Bottone "Inserisci" inserisse i valori presi dalle JTextField, e chiudesse la finestra aperta. Come faccio a chiudere la finestra da un bottone?? Inoltre...come faccio a verificare che il testo inserito nelle 2 JTextField siano numeri?
    Per il primo problema ti basta chiamare dispose() su un riferimento alla finestra da chiudere .
    Per il secondo problema hai due soluzioni:
    1)quella che io preferisco fai in modo di filtrare preventivamente l'input in modo da impedire proprio l'inserimento di NON numeri. Questo si fa in maniera analoga a quanto abbiamo già visto in un'altra discussione (ora non ho il link) cerca OnlyNumberTextField nel motore del forum e dovresti trovarla.
    2)Puoi fare un controllo a posteriori sull'input facendo un parseDouble sulla stringa ottenuta.Vediti la documentazione in proposito.
    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.)

  5. #5
    il primo non mi funziona..ho inserito nell'ascoltatore Inserisci : p_ins.dispose(); ma non succede nulla..è come se non fosse cambiato nulla...

    codice:
    	private class Inserisci implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			figura.setCoordinateVertice(n,Double.parseDouble(Est.getText()),Double.parseDouble(Nord.getText()));
    
    			p_ins.dispose();
    		}
    	}

  6. #6
    Originariamente inviato da zannas
    il primo non mi funziona..ho inserito nell'ascoltatore Inserisci : p_ins.dispose(); ma non succede nulla..è come se non fosse cambiato nulla...

    codice:
    	private class Inserisci implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			figura.setCoordinateVertice(n,Double.parseDouble(Est.getText()),Double.parseDouble(Nord.getText()));
    
    			p_ins.dispose();
    		}
    	}
    Hai ragione funziona solo con la finestra principale dispose(), devi usare setVisible(false);
    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.)

  7. #7
    codice:
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.DefaultTableModel;
    
    
    public class NonEditableTable extends JTextField implements ActionListener
    {
        private static final long serialVersionUID = 8554350982699149972L;
        private JButton butClose;
        private JButton butOpen;
        private JFrame frame2;
        private JFrame frame;
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            new NonEditableTable();
        }
        public NonEditableTable()
        {
            frame = new JFrame();
            frame .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.getContentPane().setLayout(new FlowLayout());
            JScrollPane scrollPane = new JScrollPane();
            String[][] data = new String[][]{{"dato1","dato2","dato3","dato4"},
                    {"dato1","dato2","dato3","dato4"},
                    {"dato1","dato2","dato3","dato4"}};
            String[] columnNames = new String[]{"Col1","Col2","Col3","Col4"};
            JTable table = new JTable();
            scrollPane.getViewport().add(table);
            
            DefaultTableModel model = new DefaultTableModel()
            {
    
                /**
                 * 
                 */
                private static final long serialVersionUID = 1L;
    
                public boolean isCellEditable(int row, int column)
                {
                    return false;
                }
                
            };
            model.setDataVector(data,columnNames);
            table.setModel(model);
            frame.getContentPane().add(scrollPane);
            
            frame2 = new JFrame();
            butClose = new JButton("Chiudi");
            butOpen = new JButton("Apri");
            butClose.addActionListener(this);
            butOpen.addActionListener(this);
            frame.getContentPane().add(butClose);
            frame.getContentPane().add(butOpen);
            frame.pack();
            frame.setVisible(true);
        }
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource() == butClose)
                frame2.setVisible(false);
            else if (e.getSource() == butOpen)
                frame2.setVisible(true);
            
        }
    
    }
    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.)

  8. #8
    dato che non ho capito niente e non riesco a sbloccarmi vi metto direttamente lo ZIP così capite cosa voglio effettivamente fare e così riuscite ad aiutarmi

    http://lnx.virusarts.net/zannasweb/Area_by_Gauss_w.zip

  9. #9
    Semplicemente per chiudere la finestra basta fare così:
    codice:
    	private class Inserisci implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			figura.setCoordinateVertice(n,Double.parseDouble(Est.getText()),Double.parseDouble(Nord.getText()));
    
    			p_ins.setVisible(false); 
    		}
    }
    Per quanto riguarda la storia di inserire solo numeri come ha detto unomichisiada guardati questo post.

    http://forum.html.it/forum/showthrea...Java+textfield

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

    Neverland - Il mio Forum

  10. #10
    Originariamente inviato da Matteo982
    Semplicemente per chiudere la finestra basta fare così:
    codice:
    	private class Inserisci implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			figura.setCoordinateVertice(n,Double.parseDouble(Est.getText()),Double.parseDouble(Nord.getText()));
    
    			p_ins.setVisible(false); 
    		}
    }
    Per quanto riguarda la storia di inserire solo numeri come ha detto unomichisiada guardati questo post.

    http://forum.html.it/forum/showthrea...Java+textfield

    Ciao.
    Bravo, quella discussione non riuscivo più a trovarala nemmeno io.Per il setVisible hai già risposto tu.
    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.