Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 15-02-2007, 01.30.23   #1
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
[JAVA] Controllo contenuto stringhe

Ok, ok è tardi, dovrei andare a letto e pensarci domani, ma proprio non ci riesco.

Sto iniziando a creare una piccola Gui che compilati 3 campi andrà poi a generare un file, scrivendo le informazioni inserite.

Al momento del controllo per vedere se tutti i campi sono stati compilati c'è il problema, praticamente è come se il controllo non andasse, anche se tutti i campi non fossero riempiti il programma continuerebbe a girare senza problemi e questo è un problema visto che obbligatoriamente tutti i campi devono essere compilati.

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

public class InserisciDati extends JFrame
{
 JButton bottone1;
 public JTextField autore;
 public JTextField titolo;
 public JTextField editore;
 JLabel label_autore;
 JLabel label_titolo;
 JLabel label_editore;
 
 
 public static void main(String[] args)
 {
  new InserisciDati();	 	
 }	 
 
 public InserisciDati()
 {
  this.setTitle("Inserisci i dati da salvare nel file!");	 	
  this.setLocation(250,250);
  this.setSize(400,150);
  this.setLayout(new GridLayout(4,2));
  this.creaGui();
   
   this.add(label_autore);
   this.add(autore);
   
   this.add(label_titolo);
   this.add(titolo);
   
   this.add(label_editore);
   this.add(editore);
   
   this.add(bottone1); 
  
  this.gestioneEventi();
  this.setVisible(true);
 }
 
 public void creaGui()
 {
  autore = new JTextField();
  titolo = new JTextField();
  editore = new JTextField();
  
  label_autore = new JLabel("Nome autore: ");
  label_titolo = new JLabel("Titolo libro: ");
  label_editore = new JLabel("Casa editrice: ");   
  
  bottone1 = new JButton("Scrivi sul file");
 }
 
 public void gestioneEventi()
 {
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  bottone1.addActionListener(new AscoltatorePulsante());
 }
 
 // Inner class
  
  public class AscoltatorePulsante implements ActionListener
  {
   public boolean controlloCampi()
   {
    boolean flag = false;
    String s1 = (String) autore.getText();
    
    //if ( (autore.getText()) == "" )  
    if (s1 == "")
     flag = false;
    else
     System.out.println("Sono passato"); flag = true; 
     
    return flag;      
   }
   
   public void actionPerformed(ActionEvent e)
   {
    Object a = e.getSource(); 
    
     if (a == bottone1)
     {
      boolean flag = controlloCampi();
      
       if (flag == false)
        System.out.println("Errore! Uno o piu' campi non correttamente riempiti");
       else
        System.out.println("Tutti i campi sono stati correttamente riempiti");
        
     }
    }
   }
  
  // Fine Inner Class
	
}
Le aree di testo sono classi JTextField.
Per semplicità nel metodo "controlloCampi()" ho fatto il controllo solo sull'oggetto "autore".


Come potrei risolvere??

tnx!

Ultima modifica di Downloader : 15-02-2007 alle ore 01.35.01
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2007, 01.38.38   #2
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
I controlli sull'uguaglianza di stringhe si fanno col metodo equals()

Il metodo equals() verifica l'eguaglianza del contenuto dei due oggetti String, mentre l'operatore "==" verificare l'eguaglianza dei riferimenti in memoria... e poiché compari due oggetti che non sono lo stesso oggetto (la stringa s1 e la stringa creata al volo di contenuto nullo), il risultato del confronto sarà sempre false

In parole povere:

Codice:
if (s1.equals(""))
oppure

Codice:
if (s1.equals(new String(""))
non mi ricordo se va bene anche il primo, sono un po' (tanto) arruginito
Dav82 non è collegato   Rispondi citando
Vecchio 15-02-2007, 01.44.27   #3
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Cosi potrebbe andrebbe bene??

Codice:
  if ((autore.getText()).equals(""))
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2007, 01.44.55   #4
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Uh ecco, oltre che arruginito sono pure addormentato!

La variabile flag ti risulterà SEMPRE true, perché le assegni il valore true indipendentemente dal controllo sull'uguaglianza fra s1 e "". In pratica ti sei dimenticato di racchiudere le due istruzioni del ramo else nelle parentesi graffe (non si fanno questi errori! )


Vabbè, abbiamo beccato due errori
Dav82 non è collegato   Rispondi citando
Vecchio 15-02-2007, 01.45.26   #5
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Quota:
Inviato da Downloader
Potrei fare quindi cosi:

Codice:
  if ((autore.getText()).equals(""))
(Y)
Dav82 non è collegato   Rispondi citando
Vecchio 15-02-2007, 01.48.35   #6
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Quota:
Inviato da Dav82
Uh ecco, oltre che arruginito sono pure addormentato!

La variabile flag ti risulterà SEMPRE true, perché le assegni il valore true indipendentemente dal controllo sull'uguaglianza fra s1 e "". In pratica ti sei dimenticato di racchiudere le due istruzioni del ramo else nelle parentesi graffe (non si fanno questi errori! )


Vabbè, abbiamo beccato due errori
A##o, basta, prima di digitare un'altra miriade di bit spazzatura do un "shutdown -h now" e me ne vado a nanna.

Buonanotte e grazie.
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2007, 01.52.57   #7
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Non abbatterti... non so se ti è mai capitato di scrivere tipo

Codice:
if (flag = true)
   ...

e non capire perché non funziona una mazza...
Il sottoscritto l'ha fatto e non una volta sola
Dav82 non è collegato   Rispondi citando
Vecchio 15-02-2007, 01.55.33   #8
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Scusa, ultima cosa:

come posso fare per posizionare tutti gli oggetti grafici secondo le mie necessità senza dover ricorrere ai layout predefiniti che molte volte sono limitanti??

Ad esempio se volessi posizionare due pulsanti uno sotto l'altro nella parte bassa della finestra come potrei fare??
C'è un modo di personalizzare il layout?
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2007, 02.02.35   #9
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Mh... al volo non saprei aiutarti, una volta l'ho fatto utilizzando il layout vuoto (non mi ricordo quale sia il nome), ma ti assicuro che è una palla assurda se cominciano a esserci troppi elementi da sistemare...

Ti consiglio di provare con NetBeans, ha un gui-editor integrato che è molto carino (si chiamava Matisse), si fa tutto draggando-droppando ed è una bellezza Probabilmente anche Eclipse ha qualcosa del genere
Dav82 non è collegato   Rispondi citando
Vecchio 15-02-2007, 02.07.19   #10
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Ok, grazie.

Ci risentiamo dopo.
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2007, 17.17.25   #11
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Arieccomi:

Codice:
public class CreaFile extends InserisciDati
{
 public final String NOME_DIRECTORY_FILE = "esempio_testo.txt";
 public FileWriter fileWriter;
 String autoreCF, titoloCF, editoreCF;
 
  
  public CreaFile()
  {
   try
   {
    apri();
    
    scrivi();
      
    chiudi();
   }
   catch (FileNotFoundException e)
   {
    System.out.println("Errore verificato su FileNotFound");
    e.printStackTrace();
   } 
   
   catch (IOException e)
   {
    System.out.println("Errore verificato su IO");
    e.printStackTrace();
   };
  
  }
  
  public void apri() throws FileNotFoundException, IOException
  {
   fileWriter = new FileWriter(NOME_DIRECTORY_FILE);
  }
  
  public void chiudi() throws IOException, FileNotFoundException
  {
   fileWriter.close();
  }
  
  public void scrivi() throws IOException, FileNotFoundException
  {
   acquisisci();
   
   String stringa = generaString();
    fileWriter.write(stringa);
  }
  
  public void acquisisci()
  {
   autoreCF = esportaContenutoAutore(); 
   titoloCF = esportaContenutoTitolo();
   editoreCF = esportaContenutoEditore();
  }
  
  public String generaString()
  {
   return (autoreCF + " - " + titoloCF + " - " + editoreCF + "\n");
  }
 }
Questa è la classe delegata alla gestione del file.

Ho un problema quando vado a catturare nella funzione "acquisisci()" i valori degli oggetti "autore", "editore", "titolo" per trasformarli poi in stringhe.

La compilazione va a buon fine, viene creato correttamente il file, ma al momento di andare a scriverci dentro escono fuori una valanga di errori.

Giuro, ci sono rimasto

Questa è la classe dalla quale eredita i 3 oggetti TextField:
Codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class InserisciDati extends JFrame
{
 JButton scrivi;
 JButton visualizza;
 public JTextField autore;
 public JTextField titolo;
 public JTextField editore;
 JLabel label_autore;
 JLabel label_titolo;
 JLabel label_editore;
 
 
 public static void main(String[] args)
 {
  new InserisciDati("Inserisci i dati da salvare nel file!");	 	
 }	 
 
 public InserisciDati()
 {
 }
 
 public InserisciDati(String barra)
 {
  this.setTitle(barra);	 	
  this.setLocation(250,250);
  this.setSize(400,150);
  this.setLayout(new GridLayout(4,2));
  this.creaGui();
   
   this.add(label_autore);
   this.add(autore);
   
   this.add(label_titolo);
   this.add(titolo);
   
   this.add(label_editore);
   this.add(editore);
   
   this.add(scrivi); 
   this.add(visualizza); 
  
  this.gestioneEventi();
  this.setVisible(true);
 }
 
 public void creaGui()
 {
  autore = new JTextField();
  titolo = new JTextField();
  editore = new JTextField();
  
  label_autore = new JLabel("Nome autore: ");
  label_titolo = new JLabel("Titolo libro: ");
  label_editore = new JLabel("Casa editrice: ");   
  
  scrivi = new JButton("Scrivi sul file");
  visualizza = new JButton("Visualizza il contenuto");
 }
 
 public void gestioneEventi()
 {
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  scrivi.addActionListener(new AscoltatorePulsante());
  visualizza.addActionListener(new AscoltatorePulsante());
 }

 public String esportaContenutoAutore()
 {
  return autore.getText();
 }
  
 public String esportaContenutoTitolo()
 {
  return titolo.getText();
 }
 
 public String esportaContenutoEditore()
 {
  return editore.getText();
 }
 // Inner class
  
  public class AscoltatorePulsante implements ActionListener
  {
   int conta_autore = 0;
   int conta_titolo = 0;
   int conta_editore = 0;
   
   
   public boolean controlloCampi()
   {
    boolean flag = false;
    String s1 = (String) autore.getText();
      
    if (((autore.getText()).equals("")) || ((titolo.getText()).equals("")) || ((editore.getText()).equals("")))
     flag = false;
    else
     flag = true; 
         
    return flag;      
   }
   
   public void suggerimentoCampi()
   {
    if ((autore.getText()).equals(""))
     autore.setText("Devi inserire un nome autore");
    if ((titolo.getText()).equals("")) 
     titolo.setText("Devi inserire il titolo del libro");
    if ((editore.getText()).equals(""))
     editore.setText("Devi inserire l'editore del libro");
   }
   
   public void actionPerformed(ActionEvent e)
   {
    Object a = e.getSource(); 
    
     if (a == scrivi)
     {
      boolean flag = controlloCampi();
      
       if (flag == false)
        suggerimentoCampi();
       else
        new CreaFile();
           
     }
     
     if (a == visualizza)
      new VisualizzaFile();
     
    }
   }
  
  // Fine Inner Class
	
}
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2007, 18.05.42   #12
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Postaci gli stacktrace.
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 15-02-2007, 18.17.30   #13
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Intendi questi?


Ultima modifica di Downloader : 15-02-2007 alle ore 18.24.33
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2007, 18.25.38   #14
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Controlla che quei textfield non siano null e non siano "".. sai molti metodi se la prendono male se gli arriva un null ...

Questo vale per tutte le operazioni in generale, con le stringhe in particolare...

Ultima modifica di P8257 WebMaster : 15-02-2007 alle ore 18.31.01
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 15-02-2007, 19.33.15   #15
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
No, dovrebbero essere comunque no vuoti, per funzionare il programma richiede almeno 1 carattere su ogni JTextField
Downloader non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[Win XP PRO SP2] Non vedo più contenuto cartella Programmi millovanillo Windows 7/Vista/XP/ 2003 0 07-01-2008 02.05.36
[XP/SP2] Controllo in corso del file System primoair Windows 7/Vista/XP/ 2003 2 28-02-2006 22.13.01
[Java] Stringhe su finestra di dialogo Alhazred Programmazione 7 23-02-2004 12.25.29
controllo D:/ al boot slivio... Windows 7/Vista/XP/ 2003 2 21-11-2003 01.32.59

Orario GMT +2. Ora sono le: 23.20.26.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.