Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
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: 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 è online   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: 2794
Quindi il testo della label lo devi modificare quando viene fatto click sul pulsante, cioè nel listener dell'evento.
wingman87 è online   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: 2794
Prova a postare il codice corretto e vediamo...
wingman87 è online   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


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Il mistero della stagione degli uragani ...
La Corte di Cassazione affida i ricorsi ...
Tutti i nuovi prodotti Apple prenotabili...
DDR5, un kit da 598 a 1.215 euro in un m...
Portatile ASUS Vivobook 14 a 837,95€: AM...
Sparita da anni, AppZapper torna nel 202...
Revolut, la truffa dei dati è partita da...
Geely E2: abbiamo visto dal vivo la regi...
HUAWEI Mate XT 2, importarlo dalla Cina ...
Orpheus, la calza smart che usa la music...
La causa antitrust di Musk contro Apple ...
Nitter archiviato e XCancel sospeso tre ...
CPU RISC-V e GPU AMD insieme: la demo ch...
Un Raspberry Pi 5 e oltre 800 illustrazi...
Una giornata di Claude Code consuma più ...
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: 10:26.


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