Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-09-2009, 17:16   #1
dariocescon
Member
 
L'Avatar di dariocescon
 
Iscritto dal: Feb 2004
Città: Visnà (Italy)
Messaggi: 186
[JAVA] metodo validate() soluzione problema

Ciao.

Ho un piccolo problema che vorrei risolvere.

In pratica ho un JApplet (come da codice).

Non riesco a far visualizzare nulla e in più credo che io debba usare il metodo validate() per validare i componenti aggiunti all'interfaccia, ma istanziati al di fuori dell'INIT

Spero possiate aiutarmi.

CODICE:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
class ValidateMethod extends JApplet {
private JButton btn = new JButton("Inserimento");
private JPanel jPanel = new JPanel();

public void init(){
BtnListener btnAsc = new BtnListener();
btn.addActionListener(btnAsc);
Container cnt = getContentPane();
cnt.setLayout(new BorderLayout());
cnt.add(btn, "South");
jPanel.setLayout(new FlowLayout());
cnt.add(jPanel, "Center");
}
class BtnListener implements ActionListener {
public void actionPerformed(ActionEvent e){
jPanel.add(new JLabel("Pulsante premuto"));
}
}
}


Ciao e grazie
__________________
Acer aspirato 5530G Turion X2 RM70, 4GB ram, 250GB WD, Lettore BD.
Assemblato no-case, over the table, Gigabyte nForce2 ultra, Athlon Toro-B XP2200, 1,5GB ram, 320GB Seagate, Masterizzatore Samsung nextGen, tanti fili volanti.

Ultima modifica di dariocescon : 03-09-2009 alle 17:19.
dariocescon è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2009, 17:29   #2
nucarote
Senior Member
 
Iscritto dal: Mar 2004
Messaggi: 2992
Domanda stupida: ma hai provato a mettere un setVisible?
nucarote è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2009, 17:34   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il codice è, a grandi linee, ok, devi solo aggiungere un revalidate() e un repaint() dopo l'add nell'actionPerformed.

Questa è la forma esatta:

Codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;

public class ValidateMethod extends JApplet {
	private final JButton btn = new JButton("Inserimento");
	private final JPanel jPanel = new JPanel();
	
	public void init(){
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				BtnListener btnAsc = new BtnListener();
				btn.addActionListener(btnAsc);
				Container cnt = getContentPane();
				cnt.setLayout(new BorderLayout());
				cnt.add(btn, "South");
				jPanel.setLayout(new FlowLayout());
				cnt.add(jPanel, "Center");
			}
		});
	}
	
	class BtnListener implements ActionListener {
		public void actionPerformed(ActionEvent e){
			jPanel.add(new JLabel("Pulsante premuto"));
			jPanel.revalidate();
			jPanel.repaint();
		}
	}
}
Naturalmente essendo un'applet vedrai qualcosa solo dopo averla inclusa in una pagina html. Lo dico a scanso di equivoci.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2009, 17:51   #4
dariocescon
Member
 
L'Avatar di dariocescon
 
Iscritto dal: Feb 2004
Città: Visnà (Italy)
Messaggi: 186
Grazie per le risposte.

Allora io sbagliavo NON mettendo public la classe. PERCHE' deve essere public?

E poi ho notato che se metto revalidate() + repaint(), oppure validate() e basta, ottengo lo stesso risultato.

Sapresti spiegarmi perchè tu metteresti anche il repaint() ?
dariocescon è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2009, 18:50   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Secondo la documentazione revalidate è il validate dei componenti Swing. Il repaint lo metto per abitudine.

Il comportamento di add, validate, revalidate eccetera non è omogeneo. Ci sono componenti per cui basta l'add, componenti per cui basta revalidate e componenti per non sembra bastare nulla. Così taglio la testa al toro e metto sia revalidate che repaint.

Per il modificatore public, il plug.in che carica l'applet usa lo fa tramite reflection attraverso una classe che appartiene ad un package diverso da quello dell'applet che cerca di caricare da cui la necessità che l'applet sia pubblica - altrimenti risulterebbe inaccessibile.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2009, 14:05   #6
dariocescon
Member
 
L'Avatar di dariocescon
 
Iscritto dal: Feb 2004
Città: Visnà (Italy)
Messaggi: 186
Grazie per la risposta.

Scusami, potresti spiegarmi meglio cosa è reflection?

Se non ho capito male dovrebbe essere un plug-in che carica la classe, ne guarda tutti i metodi e variabili e avvia l'esecuzione di :

- Avvia il main() se si è all'inizio di un programma AWT / SWING;
- Avvia il costruttore "Oggetto()" senza argomenti quando viene istanziato un oggetto "Oggetto()".
- Avvia init() quando si tratta di Applet e JApplet.

Sbaglio vero?
dariocescon è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2009, 16:36   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Riflessione è accedere alle proprietà di un'istanza indivduate tramite analisi delle carattistiche del tipo dell'istanza durante l'esecuzione. L'individuazione è detta introspezione.

Il plug-in java a cui mi riferisco è quello che carica le applet nei browser. L'esecuzione di applicazioni "standalone" è diversa.

Il plug-in genera un'istanza dell'applet tramite riflessione. Anzichè dire:

JApplet a = new LaMiaApplet();

dice una cosa tipo:

Class<?> c = Class.forName(ilNomeDellaMiaClasseApplet);
Applet applet = (Applet)c.newInstance();
applet.init();

Tutto qua. Non è una cosa molto interessante di per sè ma spiega il perchè l'applet debba essere pubblica. Se non lo fosse quel c.newInstance() sparerebbe un'eccezione di accesso.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2009, 16:46   #8
dariocescon
Member
 
L'Avatar di dariocescon
 
Iscritto dal: Feb 2004
Città: Visnà (Italy)
Messaggi: 186
Ti ringrazio.

Ora ho capito.

Ora cerco 2 cose in rete sulla differenza tra quello che anche tu hai nominato

Class.forName(String className)
e
idClasse.class

Se non le trovo sono costretto a chiderti nuovamente un aiutino.

Cmq ti ringrazio per l'aiuto che mi stai dando per capire queste sfacettature del Java

Ultima modifica di dariocescon : 05-09-2009 alle 16:56.
dariocescon è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2009, 18:06   #9
dariocescon
Member
 
L'Avatar di dariocescon
 
Iscritto dal: Feb 2004
Città: Visnà (Italy)
Messaggi: 186
Correggimi se sbaglio:

Entrambi servono per reperire informazioni sull'oggetto che sto trattando.

static Class forName(String className) viene utilizzato a tempo di esecuzione. Può però lanciare una ClassNotFoundException.

idClass.class dovrebbe fare la stessa cosa, ma a tempo di compilazione.

Giusto?

C'è qualcosa da aggiungere?
dariocescon è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2009, 19:53   #10
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non servono per reperire informazioni su un certo oggetto. Per farlo devi usare il metodo getClass() sull'oggetto.

Object x = qualcosa;
Class<?> tipoRuntime = x.getClass();

Il letterale ".class" e il metodo forName di Class servono per ottenere l'istanza dell'oggetto che rappresenta il tipo di qualcosa. Ad esempio:

String.class restituisce un riferimento di tipo Class<String> che rappresenta il tipo degli oggetti String, Runnable.class restituisce un riferimento di tipo Class<Runnable> che rappresenta il tipo degli oggetti Runnable eccetera. A sinistra di .class dev'esserci il nome di un tipo (non una variabile, quindi).

Il metodo forName cerca e carica una classe - nel senso che se non è già presente nella memoria della macchina virtuale ce la infila - e restituisce un riferimento all'istanza di tipo Class che la rappresenta.

I tre meccanismi hanno utilità diverse.

Il letterale .class è usato in congiunzione con classi o metodi generici per ottenere risultati polimorfici da sorgenti amorfe o monomorfe.

Class.forName è usato per ritardare il caricamento di classi.

getClass() è usato per ispezionare le capacità del tipo di un oggetto di cui non è nota a priori la classe di appartenenza.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Nuove informazioni sul fallimento del la...
SpaceX: completato parte dell'assemblagg...
Landspace si prepara al secondo lancio d...
Tutti gli sconti Apple su Amazon: tornan...
Altro che entry-level: due smartwatch Am...
Roscosmos ha posticipato (ancora) il lan...
Isar Aerospace si prepara al secondo lan...
Tory Bruno è entrato in Blue Orig...
Fujifilm lancia la cartuccia per archivi...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
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: 21:02.


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