Visualizzazione risultati 1 fino 7 di 7

Discussione: Errore in un' applicazione Java

  1. #1
    Guest

    Predefinito Errore in un' applicazione Java

    X fare pratica in java con le interfacce grafiche volevo fare un piccolo programmino che tu gli inserisci un testo e lui te lo scrive in una finestra...
    ecco il codice :
    import java.awt.Container
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

    //classe principale
    public class simbiosi implements ActionListener
    {

    Container c;
    JTextField input;
    input = new JTextField(10);
    input.addActionListener(this);
    c.add (input);

    //metodo main del programma
    public void main ( String args[] )
    {

    Container c;
    JButton pulsante;

    pulsante = new JButton ( "Invia" );
    pulsante.addActionListener( this );
    Container.add( pulsante );

    }
    public void actionPerformed( ActionEvent e )
    {
    JOptionPane.showMessageDialog( null, input );
    }

    }
    il compilatore però continua imperterrito a dirmi (nonostante le ie ripetute modifiche):
    [amedeo@localhost Java]$ javac simbiosi.java
    simbiosi.java:13: <identifier> expected
    input = new JTextField ( 10 );
    ^
    simbiosi.java:14: <identifier> expected
    input.addActionListener(this);
    ^
    simbiosi.java:15: <identifier> expected
    c.add (input);
    ^
    3 errors
    Non so + come fare qualcuno sa dirmi cosa ho sbagliato?
    Ultima modifica di AmeHomePage : 21-01-2005 alle ore 12.43.03 Motivo: errore

  2. #2
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Ti spiego, al di fuori dei metodi si fanno principalmente dichiarazioni di variabili, nessun altro codice deve essere scritto fuori.
    Dunque ti basta scrivere le operazioni di inizializzazione che avevi eseguito su "input" DENTRO il metodo main, ovvero precisamente le righe:

    input = new JTextField(10);
    input.addActionListener(this);
    c.add (input);

    le sposti dentro il main.


    Aggiungo:
    inoltre
    Container.add( pulsante );
    devi modificarlo con:
    c.add( pulsante );

    info: per convenzione i nomi di classi vanno scritti con l'iniziale maiuscola, dunque sarebbe meglio Simbiosi (invece tipicamente le variabili hanno l'iniziale minuscola appunto per distinguerle dai moni di classe).
    Ultima modifica di heracleum : 22-01-2005 alle ore 18.03.22
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  3. #3
    Guest

    Predefinito

    solo che se io metto

    input = new JTextField(10);
    input.addActionListener(this);
    c.add (input);

    nel metodo main poi nel metodo actionPerformed quando scrivo

    JOptionPane.showMessageDialog( null, input );

    il compilatore da un errore in input xkè lui credendo che sia una variabile non riesce a capirne il valore per quello ho messo quelle righe fuori da main ho pensato di trattare input come se fosse una variabile (cmq non sapevo che solo le variabili si potevano dichiarare fuori dal metodo main)

  4. #4
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Aspetta aspetta che vedo:
    public void main ( String args[] )
    eh no...
    il main deve essere "static"
    dunque:
    Codice:
    public static void main ( String args[] )
    e dunque dovresti dichiarare static anche la varabile input (l'errore di compilazione a cui accennavi suppongo) un metodo static non può trattare variabili non static.

    Oppure più ortodossamente dovresti fare così, riscrivo il codice completo se no non si capisce nulla:
    Codice:
    import java.awt.Container
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    //classe principale
    public class Simbiosi implements ActionListener
    {
    
    Container c;
    JTextField input;
    
    //metodo main del programma
    public void main ( String args[] )
    {
     Simbiosi s = new Simbiosi();
    }
    
    // Aggiungo il "metodo costruttore" dove inizializzo 
    // il tutto (senza fare tutto nel main che è static)
    public Simbiosi(){
    
    Container c = new Container();
    
    input = new JTextField(10);
    input.addActionListener(this);
    c.add (input);
    
    JButton pulsante = new JButton ( "Invia" );
    pulsante.addActionListener( this );
    c.add( pulsante );
    
    }
    
    public void actionPerformed( ActionEvent e )
    {
    JOptionPane.showMessageDialog( null, input );
    }
    
    }
    Nota che il Container non l'avevi istanziato.

    Ma nonostante abbia corretto la forma e la "compilabilità"... è ovvio che qualcosa non può funzionare:
    quando e DOVE mostri il container con casella e pulsante?
    e inoltre nel JOptionPane vuoi mostrare solo il testo inserito o proprio la casella (chiedo visto che non so la risposta qui sopra)
    se vuoi mostrare il testo inserito dovresti fare:
    JOptionPane.showMessageDialog( null, input.getText() );
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  5. #5
    Guest

    Predefinito

    è ovvio che qualcosa non può funzionare: quando e DOVE mostri il container
    cm faccio a specificarlo?

  6. #6
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Intendo dire...
    il container, per essere visibile, deve essere inserito in una finestra no?
    Appunto dal codice che vedo il container non viene utilizzato, non viene aggiunto a nessun J/Frame... per questo mi chiedevo.. se volevi inserirlo nel JOptionPane la prima volta per poi mostrare nuovamente un JOptionPane ma solo con il valore Stringa inserito?...
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  7. #7
    Guest

    Predefinito

    Ah ho capito cosa vuoi dire! Si forse è meglio metterlo in un JOptionPane.showMessageDialog...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •