|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2013
Messaggi: 27
|
[Java] Richiamare Oggetto
sono nuovo del Java ed ho ancora problemi con alcune cose.
il mio problema è questo: Codice:
import java.awt.BorderLayout;
public class frame1 extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame1 frame = new frame1();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public frame1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton Selezione = new JButton("Seleziona File");
Selezione.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
JFileChooser scelta= new JFileChooser();
FileFilter documentoWord = new FileNameExtensionFilter("DOC file", "doc");
FileFilter documentoPdf = new FileNameExtensionFilter("PDF file", "pdf");
FileFilter documentoOdt = new FileNameExtensionFilter("ODT file", "odt");
scelta.addChoosableFileFilter(documentoPdf);
scelta.addChoosableFileFilter(documentoOdt);
scelta.setFileFilter(documentoWord);
int sel=scelta.showDialog(null, "Scegli File..");
if(sel==JFileChooser.APPROVE_OPTION){
File scelto = scelta.getSelectedFile();
String FileN=scelto.getName();
String FileP=scelto.getPath();
DatiFile a =new DatiFile();
a.setDati(FileN, FileP);
}
}
});
Selezione.setBounds(303, 23, 105, 23);
contentPane.add(Selezione);
JLabel stringaPath = new JLabel("Nessun file selezionato");
stringaPath.setForeground(new Color(0, 0, 0));
stringaPath.setBackground(Color.LIGHT_GRAY);
stringaPath.setBounds(33, 22, 234, 24);
contentPane.add(stringaPath);
if ((a.getNome()==null)||(a.getPath==null)) stringaPath.setText("Nessun File Selezionato");
else stringaPath.setText(a.getNome + " " + a.getPath);
}
public class DatiFile{
public String NomeFile;
public String PathFile;
public String getNome(){
return this.NomeFile;
}
public String getPath(){
return this.PathFile;
}
public void setDati(String Nome, String Path) {
this.NomeFile= Nome;
this.PathFile= Path;
}
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2010
Messaggi: 1609
|
In Java un oggetto è visibile solo nella porzione di codice delimitata dalle due parentesi in cui è stato dichiarato.
Nel tuo caso, se dichiari a in mouseClicked non lo vedi al di fuori Se ti serve in altri punti del codice, devi spostare la dichiarazione di a Ultima modifica di gianmpu : 04-04-2014 alle 17:06. |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Apr 2013
Messaggi: 27
|
Quote:
se lo dichiaro all'inizio del frame mi dice: "cannot refer to a non-final variable a inside an inner class defined in a different method" se invece lo metto dentro al listener non lo riconosce fuori e se invece lo metto all'inizio del file non mi da errore ma la label continua a mostrare path e nome del file come nulli...come devo fare? Ultima modifica di Peppe 93 : 04-04-2014 alle 18:05. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Perché se la dichiari all'interno di un metodo è una variabile locale che cioè esiste solo finché il metodo in cui è dichiarata è in esecuzione, quello che a te serve è una variabile d'istanza che invece esiste finché l'oggetto di cui è parte è in memoria.
La devi dichiarare allo stesso livello di Codice:
private JPanel contentPane; |
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Apr 2013
Messaggi: 27
|
Quote:
praticamente a me serviva inizialmente che dopo aver scelto il file la label mi mostrasse path e nome del file |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Quindi il testo della label lo devi modificare quando viene fatto click sul pulsante, cioè nel listener dell'evento.
|
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Apr 2013
Messaggi: 27
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Prova a postare il codice corretto e vediamo...
|
|
|
|
|
|
#9 |
|
Junior Member
Iscritto dal: Apr 2013
Messaggi: 27
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:57.




















