Salve, vorrei visualizzare delle stringhe presa da un file su una textarea, ma ogni volta non riesco a visualizzarle correttamente.
Nella textarea viene stampato il titolo del libro ma se riavvio, stampa di nuovo il titolo del libro precedente
Codici
Libreria.java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class Libreria
{
public static void main (String argv[]) throws FileNotFoundException, IOException
{
//Input
GregorianCalendar gc = new GregorianCalendar(); //rileva data
int mese= gc.get(Calendar.MONTH);
mese++;
String sMese= String.valueOf(mese); //get e conv mese
String sAnno = String.valueOf(gc.get(Calendar.YEAR)); // get e conv anno
String sGiorno = String.valueOf(gc.get(Calendar.DAY_OF_MONTH)); //get e conv giorno
JFrame f = new JFrame ("Gestione biblioteca");
JPanel p = new JPanel ();
JPanel txt = new JPanel ();
JPanel arGr= new JPanel ();
JPanel pann=new JPanel ();
JLabel disp = new JLabel ("Disponibili: ");
JButton ord = new JButton (" Ordina ");
JButton cover = new JButton (" Copertina ");
JLabel img=new JLabel();
JLabel dataDiScadenza = new JLabel ("Data di scadenza(gg/mm/aaaa): ");
JButton est = new JButton (" Estendi data ");
JButton ordinati= new JButton (" Visualizza ordini effettuati ");
JTextField month = new JTextField (sMese, 2); //Textfield per il mese
JTextField year = new JTextField (sAnno, 4); //TextField per l'anno
JTextField day = new JTextField (sGiorno, 2); // textfield per il giorno
JComboBox libri = new JComboBox();
JTextArea txtOrd = new JTextArea(10,10);
//Costruttore
GestorePulsanti gest = new GestorePulsanti (sMese,sAnno,sGiorno, libri,txtOrd); //gestorepulsanti
//Pannello
txt.add(dataDiScadenza);txt.add(day); txt.add(month); txt.add(year); txt.add(est);
month.setEditable(true); day.setEditable(true); year.setEditable(false);
p.setLayout(new BorderLayout());
p.add(img, "Center");
p.add(txt, "East");
p.add(disp, "West");
//apertura file
FileReader file = new FileReader ("libri.txt");
BufferedReader fIN = new BufferedReader (file);
String stringa = fIN.readLine();
while (stringa != null)
{
stringa=fIN.readLine();
libri.addItem(stringa);
p.add(libri);
}
file.close(); //chiusura file
p.add(ord, "West");
ord.addActionListener(gest);
est.addActionListener(gest);
ordinati.addActionListener(gest);
pann.add(ordinati, "West");
pann.add(txtOrd, "East");
p.add(pann,"South");
f.getContentPane().add(p);
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
GestorePulsanti.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class GestorePulsanti implements ActionListener{
private String letto;
private JTextArea txtOrd = new JTextArea ();
private String sMese;
private String sAnno;
private String sGiorno;
private JComboBox libri;
private JComboBox ordinazioni;
GestorePulsanti(String sMese, String sAnno, String sGiorno, JComboBox libri, JTextArea letto)
{
this.sMese=sMese;
this.sAnno=sAnno;
this.sGiorno=sGiorno;
this.libri=libri;
this.txtOrd=letto;
}
public void actionPerformed(ActionEvent e)
{
String azione=e.getActionCommand();
if (azione.equals(" Ordina "))
{
int hhh;
hhh = JOptionPane.showConfirmDialog(null,
"Sei sicuro di voler ordinare?"+ " "+libri.getSelectedItem(),
"Ordine",
JOptionPane.YES_NO_OPTION);
if ( hhh == JOptionPane.YES_OPTION)
{
try
{
FileWriter fileOut = new FileWriter ("libriOrdinati.txt",true);
PrintWriter fOUT = new PrintWriter (fileOut);
fOUT.println(""+libri.getSelectedItem());
fOUT.flush();
fileOut.close();
}
catch (IOException ex)
{
JOptionPane.showMessageDialog(null,
"File di scrittura non aprto",
"Errore",
JOptionPane.ERROR_MESSAGE);
}
JOptionPane.showMessageDialog(null,
"Ordine confermato",
"Hai Ordinato:"+ " "+libri.getSelectedItem(),
JOptionPane.INFORMATION_MESSAGE);
}
}
else if (azione.equals(" Estendi data "))
{
String messaggio = "Nuova data: "+sGiorno+"/"+sMese+"/"+sAnno;
JOptionPane.showMessageDialog(null,
messaggio,
"Conferma",
JOptionPane.INFORMATION_MESSAGE);
}
else
if (azione.equals(" Visualizza ordini effettuati "))
{
try
{
FileReader file = new FileReader ("libriOrdinati.txt");
BufferedReader fIN = new BufferedReader (file);
String text = "",lettura="";
while((lettura = fIN.readLine()) != null)
{
text += lettura;
txtOrd.append(text+"\n");
}
file.close();
txtOrd.setVisible(true);
}
catch (IOException ie)
{
}
}
}
}