|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Mar 2011
Messaggi: 3
|
[JAVA]Aprire txt, ed inserirne il testo nella JTextArea
Ciao a tutti ragazzi!
Ho un piccolo problema, nel mio programma ho una JTextArea, ed un pulsante, cliccando su di esso, si apre il JFileChooser, scelgo il file ma non accade nulla. Questo perchè non so come copiare il contenuto del file .txt nella JTextArea. Qualcuno di voi sa farlo? Grazie in anticipo! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quando l'utente chiude il chooser con il tasto di conferma, con getSelectedFile ottieni un oggetto File che rappresenta l'abstract path del file da aprire e leggere; a questo punto puoi scomporre il problema in due parti:
1) leggere tutto il file di testo memorizzandolo in un oggetto String 2) assegnare la String alla textArea Per il punto 1, potresti istanziare un java.util.Scanner che operi con il File selezionato come sorgente, setti il delimitatore che dice allo scanner di leggere tutto fino a fine file: Codice:
... File file = chooser.getSelectedFile(); String text = new Scanner(file).useDelimiter("\\Z").next(); ...
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 14-03-2011 alle 16:15. |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Mar 2011
Messaggi: 3
|
Grazie mille, ma ora mi sorge una altro problema, non riesco a metterlo sulla actionlistener di un JMEnuItem
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Che difficoltà incontri, in particolare?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Mar 2011
Messaggi: 3
|
Allora:
Codice:
menu1.add(nuovo = new JMenuItem("Nuovo")); nuovo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); JFileChooser chooser = new JFileChooser(); chooser.addChoosableFileFilter(new FileNameExtensionFilter("Documento di testo", "txt")); int returnVal = chooser.showOpenDialog(textarea); if (returnVal == JFileChooser.APPROVE_OPTION) { file = chooser.getSelectedFile(); Reader in = new FileReader(file); textarea.read(in, null); } |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ci sono un tot di opzioni. Ad esempio potresti promuovere il JFileChooser da variabile locale a membro di istanza della tua classe per poi inizializzarlo nel costruttore (o membro di classe, inizializzato con un blocco statico); in questo modo puoi poi fare riferimento ad esso.
Il fatto di istanziare il file chooser una volta sola (rispetto ad averlo come variabile locale in un metodo, dove verrebbe istanziato ad ogni chiamata) ha un piacevole effetto collaterale: ogni volta che l'utente riapre il file chooser si ritroverà nell'ultima posizione del filesystem in cui aveva navigato prima di chiuderlo. Es.: Codice:
// dichiarazione di membro di istanza private final JFileChooser txtChooser; ... // nel costruttore: txtChooser = new JFileChooser(); txtChooser.addChoseableFileFilter( new FileNameExtensionFilter("Documento di testo", "txt")); ... // nell'inizializzazione del menu item menu1.add(nuovo = new JMenuItem("Nuovo")); nuovo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int returnVal = txtChooser.showOpenDialog(textarea); if (returnVal == JFileChooser.APPROVE_OPTION) { File txt = txtChooser.getSelectedFile(); // fai quel che vuoi con il file txt... } } }); E' poi possibile passare un'istanza della Action implementata a diversi componenti, ad esempio al tuo menu item piuttosto che ad un altro bottone o ad altri componenti ancora: quando una di queste sorgenti viene attivata, la action collegata viene eseguita in risposta. Per non parlare del fatto che una Action può fungere da contenitore di proprietà che vengo automaticamente consdivise dai componenti-sorgente a cui viene collegata (ad esempio, Action può impostare un'icona, una descrizione, il testo del tooltip, e così via): una modifica alle proprietà della Action si propaga a tutti i componenti collegati (ad esempio disabilitando la Action vengono automaticamente disabilitati anche i componenti). Vale la pena usarla solo se ci sono dei vantaggi nel farlo, ovvero se hai più di un unico componente collegato ad una data azione. Se ti interessa, a questa pagina trovi una breve intro sulle Action.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 15-03-2011 alle 09:20. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:35.