Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-04-2014, 09: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, 17: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 17:06.
gianmpu è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 17: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 18:05.
Peppe 93 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 17:55   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
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, 18: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, 18:19   #6
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
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, 18: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, 20:05   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Prova a postare il codice corretto e vediamo...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2014, 20: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


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
Il MacBook Neo 2 si avvicina, arriver&ag...
Google lancia Gemini 4 Carbon, il modell...
Malesia, sequestrati chip AI per 12 mili...
Google Pixel 11 Pro a 938€ e Pixel 11 Pr...
Geely Auto Talks Bari: mobilità, compete...
Falsi emulatori PS5 su GitHub: il malwar...
SIHOO B100 a 166€ e B100 Pro a 219€ su A...
OpenAI punta sulle TPU di Google per rid...
Un manager di Anthropic abolisce il test...
Amazfit T-Rex 3 Pro riceve oltre 170 nov...
Apple AirPods Pro 3 a 199€ e AirPods 5 a...
GeForce GTX 750 Ti con 8 GB di VRAM? Cyb...
Xiaomi rilancia la sfida ed è gi&...
WhatsApp ridisegna la schermata del back...
Mini PC Ryzen 5 con 32 GB di RAM e SSD d...
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: 09:44.


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