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

    [java] problema

    salve a tutti ragazzi ho un problema con questo mini-programmino sapete darmi una mano?
    codice:
    // Java Document
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    class variazione_percentuale_graph {
    	public Label Titolo;
    	public JButton Calcola;
    	public JTextField Valore1;
    	public JTextField Valore2;
    	public Float n1;
    	public Float n2;
    	public Float ris;
    	public Label Risultato;
    	
    public static void main(String[] args) {
    	//creo oggetti
    	Label Titolo = new Label("Variazione Percentuale tra Due numeri",1);
    	
    	JButton Calcola = new JButton("Calcola!");
    	Calcola.addActionListener(new Ascoltatore());
    	
    	JTextField Valore1 = new JTextField("00000");
    	JTextField Valore2 = new JTextField("00000");
    	
    	Label Risultato = new Label("Non è ancra stato effettuato alcun calcolo");
    		
    	//creo la finestra
    	JFrame Finestra = new JFrame("Variazione Percentuale tra due valori -- by Zannas.tk");
    	Finestra.setSize(10,10);
    	//inserisco gli oggetti
    	Finestra.setLayout(new BorderLayout());
    	Finestra.getContentPane().add(Titolo,BorderLayout.PAGE_START);
    	
    		JPanel sx = new JPanel();
    		sx.add(Valore1);
    		sx.add(Valore2);
    		sx.add(Calcola);
    	
    	Finestra.getContentPane().add(sx,BorderLayout.CENTER);
    	
    	Finestra.getContentPane().add(Risultato,BorderLayout.SOUTH);
    	//metto defualt bottone il Calcola
    	Finestra.getRootPane().setDefaultButton(Calcola);
    	//
    	Finestra.pack();
    	Finestra.setVisible(true);
    }
    
    	//creo Ascoltatore evento che da il risultato
    	public class Ascoltatore implements ActionListener {
    		 public void actionPerformed (ActionEvent evento) {
    			Float n1 = new Float(Valore1.getText());
    			Float n2 = new Float(Valore2.getText());
    			Float ris = new Float((n2*100/n1)-100);
    			Risultato.setText("Valore 1: "+n1+"\n Valore 2: "+n2+"\n Variazione Percentuale: "+ris+"%");
    			}
    	}
    //fine tutto
    }

  2. #2
    potresti essere un pochino più specifico sul problema che hai? Così ti possiamo rispondere in maniera più utile!
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  3. #3
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    scusa ma che problema hai?

  4. #4
    se compilo mi da questo errore:
    variazione_percentuale_graph.java:21: non-static variable this cannot be referenced from a static context
    Calcola.addActionListener(new Ascoltatore());
    ^
    1 error

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class variazione_percentuale_graph extends JFrame {
            public Label Titolo;
            public JButton Calcola;
            public JTextField Valore1;
            public JTextField Valore2;
            public Float n1;
            public Float n2;
            public Float ris;
            public Label Risultato;
    
            public variazione_percentuale_graph()  {
              super("Variazione Percentuale tra due valori -- by Zannas.tk");
              Titolo = new Label("Variazione Percentuale tra Due numeri",1);
              Calcola = new JButton("Calcola!");
              Calcola.addActionListener(new Ascoltatore());
              Valore1 = new JTextField("00000");
              Valore2 = new JTextField("00000");
    
              Risultato = new Label("Non è ancra stato effettuato alcun calcolo");
    
            //creo la this
    
              this.setSize(10,10);
             //inserisco gli oggetti
              this.getContentPane().setLayout(new BorderLayout());
              this.getContentPane().add(Titolo,BorderLayout.PAGE_START);
              JPanel sx = new JPanel();
              sx.add(Valore1);
              sx.add(Valore2);
              sx.add(Calcola);
    
              this.getContentPane().add(sx,BorderLayout.CENTER);
              this.getContentPane().add(Risultato,BorderLayout.SOUTH);
              //metto defualt bottone il Calcola
              this.getRootPane().setDefaultButton(Calcola);
              //
              this.pack();
              this.setVisible(true);
              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
    
            public static void main(String[] args) {
              variazione_percentuale_graph vpg = new variazione_percentuale_graph();
    
            }
    
            //creo Ascoltatore evento che da il risultato
            class Ascoltatore implements ActionListener {
                     public void actionPerformed (ActionEvent evento) {
                            float n1 = Float.parseFloat(Valore1.getText());
                            float n2 = Float.parseFloat(Valore2.getText());
                            float ris = n2*100/n1-100;
                            Risultato.setText("Valore 1: "+n1+"\nValore 2: "+n2+"\nVariazione Percentuale: "+ris+"%");
                            }
            }
    //fine tutto
    }
    Ero in vena di fare regali....
    Ciao
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    hai un modo strano d programmare....
    non mettere tutto nel main.

    fai una classe variazione percentuale e la richiami dal main.

    inoltre dovrebbe esserci un altro problema in questa riga:

    codice:
    Float ris = new Float((n2*100/n1)-100);
    n2 e n1 sono oggetti. nn puoi fare una divisione o una moltiplicazione.

  7. #7
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    ops sono stato preceduto

  8. #8
    Utente di HTML.it L'avatar di MatCap83
    Registrato dal
    Jun 2005
    residenza
    Firenze
    Messaggi
    1,319
    Uno dei consigli di "buona programmazione" e' quello di non mettere mai troppa roba nel main! La soluzione di Andrea1979 va bene, metti tutto nella classe principale e poi crei un semplice oggetto dal main, programmazione molto pulita....
    "Nessuno mi ha visto farlo, e non puoi provarlo in nessun modo!" (Bart Simpson)

    >>> www.ombresulweb.com <<<

  9. #9
    ma porca miseria per non dire altro... cosa aveva il my script che non funzionava!!!!!!!!! adesso funziona grazie Andrea1979. per cortesia mia mandi in privato il tuo indirizzo MSN Messanger? ne ho bisogno.. in java proprio non vado... PS:gia che ci sei mi spieghi che errore era il mio?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Per quanto riguarda l'indirizzo del Messenger: non se ne parla proprio Non perché tu non mi piaccia in maniera particolare, ma perché c'è il forum fatto apposta per fare le richieste. Un domani un tuo problema potrebbe essere simile al problema di qualcun altro... se te lo risolvono sul messenger, qui nessuno ci guadagna.

    Per le spiegazioni...

    codice:
    Float x = new Float(valore)
    crea un oggetto di tipo Float, che non è propriamente un float tipo numerico semplice.

    Per fare i conti, ti ci voleva un float semplice.
    codice:
    float a = Float.Parsefloat(Stringa)
    genera un float tipo primitivo da una stringa (o almeno ci prova).

    Per l'altro problema, il primo -per cui il programma non compilava affatto- il metodo main è statico, mentre il tuo ascoltatore no. Sarebbe successa la stessa cosa se avessi tentato di utilizzare un qualunque altro signore non statico dentro un metodo statico.

    Segui poi gli altri ingredienti generali per una programmazione più "pulita": riduci il main allo stretto necessario, adotta nomi per metodi e variabili che si confanno allo scopo per cui sono creati/invocati, fai uso oculato di costruttori e quant'altro.

    Ti rimando ad un buon manuale di programmazione in Java (le librerie ne sono stracolme). Prendine uno di uso generale.
    Ciao
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.