Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
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: 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;
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: 2787
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: 2787
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


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Risparmiare con le offerte Amazon: weeke...
Gli Xiaomi 17 arrivano a fine febbraio, ...
48.000 Pa a poco più di 100€: la ...
PC più potente, meno spesa: su Amazon to...
Con 2 acquisti si ottiene il 40% di scon...
Blocco VPN in Spagna durante le partite ...
ECOVACS DEEBOT T30C OMNI GEN2 torna a 34...
Cercate uno smartphone? Ecco 7 modelli i...
Paramount non molla: Netflix è pr...
Missione Artemis II diretta verso la Lun...
Toy Story 5 arriva al cinema: è l...
Intel cambia rotta su Linux? Nuove assun...
Samsung aggiorna Bixby con One UI 8.5: p...
L'Etiopia vieta le auto a combustione: a...
Pirateria audiovisiva: la Guardia di Fin...
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:57.


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