Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Motorola propone in fascia media il nuovo Moto G77 5G, uno smartphone che punta sul display AMOLED da 1.5K a 120Hz, e sulla fotocamera da 108 MP con stabilizzazione ottica per affrontare la fascia media. Il tutto insieme a una batteria da 5200mAh in soli 7,3 millimetri di spessore, con una scocca certificata con standard militari
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Siamo stati a Londra per la premiazione dei Sony World Photography Awards 2026, l'evento a tema fotografia più prestigioso. Fra sorprese e novità, ne approfittiamo per fare il punto sulla fotografia contemporanea, in cui la didascalia è sempre più necessaria a cogliere il senso della quasi totalità degli scatti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-04-2014, 08:39   #1
Peppe 93
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;
			
		}
		
	}
}
nel richiamare l'oggetto "a" fuori dal metodo (actionlistener) in cui è stato creato mi da errore, so che sto sbagliando qualcosa nel passaggio dei valori ma non so cosa.
Peppe 93 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 16:03   #2
gianmpu
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 16:06.
gianmpu è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 16:46   #3
Peppe 93
Junior Member
 
Iscritto dal: Apr 2013
Messaggi: 27
Quote:
Originariamente inviato da gianmpu Guarda i messaggi
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
si si lo sapevo..solo non mi rendo conto dove dovrei dichiararlo per poterlo usare...

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 17:05.
Peppe 93 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 16:55   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2789
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;
In verità vedendo velocemente il tuo codice non mi torna molto l'utilizzo che fai di questa variabile "a"... Comunque dichiarandola come variabile d'istanza e inizializzandola a null dovrebbe compilare.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 17:12   #5
Peppe 93
Junior Member
 
Iscritto dal: Apr 2013
Messaggi: 27
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
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;
In verità vedendo velocemente il tuo codice non mi torna molto l'utilizzo che fai di questa variabile "a"... Comunque dichiarandola come variabile d'istanza e inizializzandola a null dovrebbe compilare.

praticamente a me serviva inizialmente che dopo aver scelto il file la label mi mostrasse path e nome del file
Peppe 93 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 17:19   #6
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2789
Quindi il testo della label lo devi modificare quando viene fatto click sul pulsante, cioè nel listener dell'evento.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 17:27   #7
Peppe 93
Junior Member
 
Iscritto dal: Apr 2013
Messaggi: 27
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Quindi il testo della label lo devi modificare quando viene fatto click sul pulsante, cioè nel listener dell'evento.
esattamente ma ho verificato che i valori passati sono sempre null
Peppe 93 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 19:05   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2789
Prova a postare il codice corretto e vediamo...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 19:12   #9
Peppe 93
Junior Member
 
Iscritto dal: Apr 2013
Messaggi: 27
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Prova a postare il codice corretto e vediamo...
grazie ma non serve, ho risolto..avevo dimenticato di spostare la dichiarazione della label all'inizio del frame
Peppe 93 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico Recensione Moto G77: display AMOLED e buona auto...
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
Cina blocca l'acquisizione di Manus da p...
Le batterie al sodio di CATL raggiungono...
Samsung rischia 36 giorni di stop totale...
Huawei annuncia l'arrivo della serie Wat...
L'auto elettrica più veloce del m...
ASUS ha rilasciato il cavo salva-GPU: 50...
TeamViewer Intelligent Agent si rinnova ...
Il conflitto in Iran fa salire i prezzi ...
B05 di Leapmotor in Italia: hatchback el...
Addio app? OpenAI prepara lo smartphone ...
MacBook Air 13" con chip M5 in offerta s...
Un round pre seed da 500mila euro per Va...
Non si butta via niente: Intel fa soldi ...
Cos'è Windows K2: il piano segreto di Mi...
L'attentatore di Trump sviluppava videog...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v