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

    [Java] due textfield e un bottone che legge un file

    non riesco a far funzionare questo programma (mi mancano dei pezzi) qualche buon cuore ha voglia di metterci un occhietto????

    il programma dovrebbe avere le seguenti caratteristiche:
    -un campo di testo di dimensione 40 colonne inizialmente vuoto.
    -un bottone "Leggi" (e qui ci sono)
    -un etichetta "totale alfabetici" (e qui c'è)
    -un campo di testo di 20 colonne inizialmente vuoto
    -tutte e 4 le componenti devono avere il font helvetica, plain, 18
    -digitando il nome di un file nel primo campo di testo quando si preme il bottone "Leggi" il programma legge il file , conta il numero dei caratteri alfabetici presenti e ne visualizza il totale nel secondo campo di testo

    inutile aggiungere che : non riesco a far stare i due campi di testo uno sopra l'altro ma me ne compare solo uno (o forse i due attaccati) e non so che funzione dare a AL1 perchè faccia tutte queste belle cose che deve fare

    qui si seguito quello che sono riuscita a scrivere me tapina
    grazie mille a chi mi vorrà aiutare
    ciao silvia

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;


    public class P2_prova extends JFrame {
    //le dichiarazioni private
    private JTextField textfield1;
    private JButton b1;
    private JLabel etichetta;
    private Box box;
    private JTextField textfield2;
    private JPanel panel;

    public P2_prova(){

    //campo di testo 1
    textfield1 = new JTextField(40);
    textfield1.setFont(new Font("Helvetica", Font.PLAIN, 18));

    //definisco gli elementi
    //bottone b1 a cui viene associata la funzione svuota
    b1 = new JButton("Leggi");
    b1.addActionListener(new AL1());


    //etichetta
    etichetta = new JLabel("Totale alfabetici:");
    //campo di testo
    textfield2 = new JTextField(10);
    textfield2.setFont(new Font("Helvetica", Font.PLAIN, 18));

    //definisco un pannello di tipo FlowLayout
    //e vi inserisco gli elementi
    panel = new JPanel();
    panel.setLayout(new FlowLayout());
    panel.add(b1);
    panel.add(etichetta);
    panel.add(textfield1);



    //definisco un box in cui inserire gli elementi barra e pannello
    // e lo aggiungo alla finestra
    box = new Box(BoxLayout.Y_AXIS);
    box.add(panel);
    getContentPane().add(box);

    //definisce le dimensioni di default
    pack();
    //chiude il programma
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //rende visibile la finestra
    setVisible(true);
    }

    //azione applicata al bottone b1
    class AL1 implements ActionListener{
    public void actionPerformed(ActionEvent e){



    }
    }

    public static void main(String[] args) {
    new P2_prova();
    }
    }
    *silvia*

  2. #2
    nn ti posso aiutare in tutto, però per dare la funzione a AL1 credo che ti basti leggere dalla JTextFiel come una normalissima lettura da tastiera, una volta che hai il nome del file aprirlo, associargli un contatore che conta il numero di caratteri. Quando vai a leggere il file devi cercare di contare i caratteri in qualche modo. Nn sono sicuro che ci sia qualche funzione che fa questo, però magari prova a guardare nello StringTokenizer, magari c'è qualcosa che ti può essere utile! spero di averti aiutato almeno in qualcosa... Purtroppo però nn so proprio dirti come fare per stampare nell'altra etichetta, sono alle prime armi con la grafica. però se guardi la documentazione magari qualcosa riesci a ricavare!

  3. #3
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; così penso dovrebbe andare, l'unica cosa non ricordo i codici ascii dei caratteri alfabetici; se te lo procuri ti basterà fare un if.

    Codice PHP:
    public class P2_prova extends JFrame {
    //le dichiarazioni private 
      
    private JTextField textfield1
      private 
    JButton b1
      private 
    JLabel etichetta
      private 
    Box box
      private 
    JTextField textfield2
      private 
    JPanel panel
      
      public 
    P2_prova(){ 
        
    //campo di testo 1 
        
        
    textfield1 = new JTextField(40); 
        
    textfield1.setFont(new Font("Helvetica"Font.PLAIN18)); 
        
    //definisco gli elementi 
        //bottone b1 a cui viene associata la funzione svuota 
        
    b1 = new JButton("Leggi"); 
        
    b1.addActionListener(new AL1()); 
      
        
    //etichetta 
        
    etichetta = new JLabel("Totale alfabetici:"); 
        
    //campo di testo 
        
    textfield2 = new JTextField(10); 
        
    textfield2.setFont(new Font("Helvetica"Font.PLAIN18)); 
        
    //definisco un pannello di tipo FlowLayout 
        //e vi inserisco gli elementi 
        
    panel = new JPanel(); 
        
    panel.setLayout(new FlowLayout()); 
        
    panel.add(b1); 
        
    panel.add(etichetta); 
        
    panel.add(textfield1); 
        
    panel.addtextfield2);
        
    //definisco un box in cui inserire gli elementi barra e pannello 
        // e lo aggiungo alla finestra 
        
    box = new Box(BoxLayout.Y_AXIS); 
        
    box.add(panel); 
        
    getContentPane().add(box); 
        
    //definisce le dimensioni di default 
        
    pack(); 
        
    //chiude il programma 
        
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      
        
    //rende visibile la finestra 
        
    setSize800,120 );
        
    setVisible(true); 
      } 
      
    //azione applicata al bottone b1 
      
    class AL1 implements ActionListener
        
        public 
    void actionPerformed(ActionEvent e){ 
          
          if( ( 
    textfield1.getText().trim() != null ) && ( textfield1.getText().trim().length() > ) ){
            try{
              
              
    FileInputStream fis = new FileInputStream(new File(textfield1.getText().trim()));
              
              while( 
    fis.available() > -){
                
                
    //quì ti gestisci il fatto che sia o meno 
                //un carattere utilizzando il codice ascii dei caratteri
                //che io non ricordo
              
    }
            }catch( 
    IOException io ){
              
              
            }
          }
        }

      public static 
    void main(String[] args) { 
        new 
    P2_prova(); 
      } 

    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  4. #4
    mmmmmm non funziona

    ho questo esercizio per contare i caratteri forse dovrei inserire questa funzione ma come?
    ho provato con l'esempio ch emi hai dato tu ma mi da un sacco di errori non riesco a farlo funzionare



    import java.io.*;
    public class Esempio15_6 {
    public static void main(String args[]){
    char buffer[]= new char[1]; //buffer di lettura
    try{
    int count = 0;
    InputStreamReader isr= new FileReader(args[0]);
    for(int n = isr.read(buffer);n>0;n=isr.read(buffer)){
    count = count+1;
    String s = new String (buffer, 0, n);
    System.out.print(s);
    }
    System.out.println();
    System.out.println("Il nr di caratteri nel file sono: " +count);
    isr.close();
    }catch(IOException e){
    System.err.println("manca un argomento");
    System.exit(-1);
    }
    }
    }
    *silvia*

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Be se l'esercizio ti funziona potresti fare:

    Codice PHP:
    public class P2_prova extends JFrame {
    //le dichiarazioni private 
      
    private JTextField textfield1
      private 
    JButton b1
      private 
    JLabel etichetta
      private 
    Box box
      private 
    JTextField textfield2
      private 
    JPanel panel
      
      public 
    P2_prova(){ 
        
    //campo di testo 1 
        
        
    textfield1 = new JTextField(40); 
        
    textfield1.setFont(new Font("Helvetica"Font.PLAIN18)); 
        
    //definisco gli elementi 
        //bottone b1 a cui viene associata la funzione svuota 
        
    b1 = new JButton("Leggi"); 
        
    b1.addActionListener(new AL1()); 
      
        
    //etichetta 
        
    etichetta = new JLabel("Totale alfabetici:"); 
        
    //campo di testo 
        
    textfield2 = new JTextField(10); 
        
    textfield2.setFont(new Font("Helvetica"Font.PLAIN18)); 
        
    //definisco un pannello di tipo FlowLayout 
        //e vi inserisco gli elementi 
        
    panel = new JPanel(); 
        
    panel.setLayout(new FlowLayout()); 
        
    panel.add(b1); 
        
    panel.add(etichetta); 
        
    panel.add(textfield1); 
        
    panel.addtextfield2);
        
    //definisco un box in cui inserire gli elementi barra e pannello 
        // e lo aggiungo alla finestra 
        
    box = new Box(BoxLayout.Y_AXIS); 
        
    box.add(panel); 
        
    getContentPane().add(box); 
        
    //definisce le dimensioni di default 
        
    pack(); 
        
    //chiude il programma 
        
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      
        
    //rende visibile la finestra 
        
    setSize800,120 );
        
    setVisible(true); 
      } 
      
    //azione applicata al bottone b1 
      
    class AL1 implements ActionListener
        
        public 
    void actionPerformed(ActionEvent e){ 
          
          if( ( 
    textfield1.getText().trim() != null ) && ( textfield1.getText().trim().length() > ) ){
    char buffer[]= new char[1]; //buffer di lettura 
    try{ 
    int count 0
    InputStreamReader isr= new FileReader(args[0]); 
    for(
    int n isr.read(buffer);n>0;n=isr.read(buffer)){ 
    count count+1
    String s = new String (buffer0n); 
    System.out.print(s); 

    System.out.println(); 
    System.out.println("Il nr di caratteri nel file sono: " +count); 
    isr.close(); 
    }catch(
    IOException e){ 
    System.err.println("manca un argomento   "e.getMessage() ); 
    System.exit(-1); 

          }
        }

      public static 
    void main(String[] args) { 
        new 
    P2_prova(); 
      } 

    Dai una controllata alle parentesi e scusami l'intendazione... ho fatto 1 copia ed incolla.
    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  6. #6
    ti ringrazio ma ,,,, a parte il fatto che non funziona , non si deve passare per la linea di comando e quindi non dovrebbero esserci dei sistem.outprint

    ma si deve scrivere il nome del file nel textfield e il risultato deve apparire del secondo textfield AIUTOOOOOOOOOOOOOO
    *silvia*

  7. #7
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Hai ragione scusami.. basta sostituire args[0] con textfield1.getText().trim() se è nel textfield1 che va scritto il nome del file
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  8. #8
    ahhhhhh no scusa non ho capito ,, sostituisco cosa dove? e devo togliere i system.print???
    *silvia*

  9. #9
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Sempre partendo dall'esempio che hai postato e che dici che funziona nel conto dei caratteri.... ad un certo punto trovi un args[0], lo sostituisci con textfield1.getText().trim() e cioè:

    InputStreamReader isr= new FileReader(args[0]); --> InputStreamReader isr= new FileReader( textfield1.getText().trim() );

    POi al posto di :

    System.out.println("Il nr di caratteri nel file sono: " +count);

    metti:

    textfield2.setText( "Numero caratteri: "+ count );

    Fammi sapere se va. Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  10. #10
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; ho testato il codice che posto; a me funziona prendilo e confrointalo col tuo; ciao:


    Codice PHP:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;


    public class 
    P2_prova extends JFrame {
    //le dichiarazioni private
    private JTextField field1;
    private 
    JTextField field2;
    private 
    JLabel etichetta;
    private 
    JButton b1;
    private 
    Box box;
    private 
    JPanel panel;

    public 
    P2_prova(){
    //campo di testo
        
    field1 = new JTextField(40);
        
    field1.setFont(new Font("Helvetica"Font.PLAIN16));
    //definisco gli elementi
    //bottone b1 a cui viene associata la funzione svuota
        
    b1 = new JButton("Leggi");
        
    b1.addActionListener(new AL1());
    //etichetta
        
    etichetta = new JLabel("Totale alfabetici:");
    //campo di testo
        
    field2 = new JTextField(20);
    //definisco un pannello di tipo FlowLayout
    //e vi inserisco gli elementi
        
    panel = new JPanel();
        
    panel.setLayout(new FlowLayout());
        
    panel.add(b1);
        
    panel.add(etichetta);
        
    panel.add(field1);
        
    panel.add(field2);

    //definisco un box in cui inserire gli elementi barra e pannello
    // e lo aggiungo alla finestra
        
    box = new Box(BoxLayout.Y_AXIS);
        
    box.add(panel);
        
    getContentPane().add(box);

    //definisce le dimensioni di default
        
    pack();
    //chiude il programma
        
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //rende visibile la finestra
        
    setVisible(true);
      }

    //azione applicata al bottone b1
      
    class AL1 implements ActionListener{
        public 
    void actionPerformed(ActionEvent e) {
          
    char[] caratteri;
          
    int quantiCaratteri 0;
          if (!
    field1.getText().equals("")) {
            try {
              
    FileInputStream fis = new FileInputStream(new File(field1.getText()));
              
    caratteri = new char[fis.available()];
              
    int tmp = -2;

              while ( ( 
    tmp fis.read() ) > -1) {
                if (
    Character.isLetter( (char)tmp )){

                  
    System.out.println( (char)tmp );
                  
    quantiCaratteri++;
                }
              }
              
    fis.close();
              
    field2.setText("" quantiCaratteri);
            }catch( 
    IOException io ){

              
    io.printStackTrace();
            }
          }

        }
      }
      public static 
    void mainString[] args ){

        new 
    P2_prova();
      }

    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

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 © 2024 vBulletin Solutions, Inc. All rights reserved.