Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-12-2006, 19:23   #1
salvo_84
Junior Member
 
Iscritto dal: May 2006
Messaggi: 23
Help! showDocument() in java - programmazione desktop e non web!!!

Ragazzi ho un grosso problema che non riesco a risolvere...
sto ultimando un programmino desktop ad interfaccia grafica sviluppato tutto in java con l'ausilio di netbeans, ma sul più bello mi sono bloccato...
ho inserito in una Jlabel un'immagine e ora vorrei che quest'immagine al click del mouse mi apra il mio broswer predefinito e vada sul mio sito che gli ho settato ma non funziona!
Posto un pò di codice:
la classe che dovrebbe far ciò l'ho creata come applet per richiamare poi la funzione in oggetto e ho scritto:

public class ClasseApplet extends java.applet.Applet implements AppletContext {
public void init() {
try{
showDocument(new URL("http://www.google.it"), "_blank");
}catch (Exception e) {
System.out.println("Erroe url");
}
}

public Applet getApplet(String name) {
return null;
}

public Enumeration<Applet> getApplets() {
return null;
}

public void showDocument(URL url) {
}

public void showDocument(URL url, String target) {
}

public void setStream(String key, InputStream stream) throws IOException {
}

public InputStream getStream(String key) {
return null;
}

public Iterator<String> getStreamKeys() {
return null;
}
}


ovviamente questo applet è richiamato da un'altra classe, o meglio da un Jpanel che è contenuto in un Jframe.
Nel Jpanel ho fatto una semplice chiamata a "new ClasseApplet()" in corrispondenza dell'evento generato dal mouse sull'immagine, e che sono sicuro funziona in quanto con il clik del mouse mi sono messo un log di stampa.
Ora non capisco perchè l'applet non mi apre la pagine web, il problema sta in ClasseApplet ma non capisco dove...

Sinceramente non vorrei che stia facendo un errore di fondo, ossia, non è che per caso tutto ciò si può fare solo in applicazioni web e non in applicazioni desktop??

Qualcuno mi aiuti...grazie!!
salvo_84 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2006, 22:25   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Le intenzioni sono comprensibili ma per un milione di ragioni la cosa che hai scritto non funziona (cosa che già sai).

Java 6 ancora non c'è, altrimenti l'apertura della pagina web sarebbe:

desktop.browse(new URL("http://www.google.it"));

Prima puoi fare una cosa del genere. Quanto devi aprire la pagina web scrivi:

new SystemProtocolHandler().openAddress("http://www.google.it"));

E SystemProtocolHandler lo devi fare. In tre fette, potrebbe essere:

Codice:
public interface FileProtocolHandler {

	void openAddress(String urlAddress);
}
Codice:
//Ne serve uno per Win, uno per Linux, uno per Max, uno per Solaris...
public class WinProtocolHandler implements FileProtocolHandler {

	public void openAddress(String address) {
		ProcessBuilder pb = new ProcessBuilder(
			"rundll32",
			"url.dll,FileProtocolHandler",
			address);
		try {
			pb.start();
		} catch(java.io.IOException ex) {
			ex.printStackTrace();
		}
	}
}
Codice:
public class SystemProtocolHandler implements FileProtocolHandler {
	private FileProtocolHandler forwardingInstance;

	public SystemProtocolHandler() {
		String os = System.getProperty("os.name");
		if(os.toLowerCase().contains("windows")) {
			forwardingInstance = new WinProtocolHandler();
		}
	}

	public void openAddress(String urlAddress) {
		if(forwardingInstance != null) {
			forwardingInstance.openAddress(urlAddress);
		}
	}
}
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2006, 22:41   #3
salvo_84
Junior Member
 
Iscritto dal: May 2006
Messaggi: 23
volendo io distribuire la mia applicazione su internet, e non sapendo a priori chi la userà (ossia quale utente, se win, unix, os, ...)
mi stai dicendo che faccio prima a rinunciare perchè l'impresa è così ardua che sembrerebbe impossibile??
salvo_84 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2006, 22:50   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Lasciar perdere...mmhhh, vedrò di dare un'occhiata al vocabolario dopo per capire che significa .

Puoi anche usare le librerie JDIC.

https://jdic.dev.java.net/

Anzi, forse è anche meglio. In pratica è quella faccenda del "desktop" di Java 6, per le versioni precedenti.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2006, 22:57   #5
salvo_84
Junior Member
 
Iscritto dal: May 2006
Messaggi: 23
ti ringrazio innanzi tutto per le risposte che mi stai dando, però ti prego non parlare troppo complicato, in quanto sono pur sempre al mio prima programma
salvo_84 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2006, 17:37   #6
salvo_84
Junior Member
 
Iscritto dal: May 2006
Messaggi: 23
Ovviamente il mio programma continua ad essere inerte al comando!!!!

ho scritto questo in corrispondenza della label che contiene il mio banner:

jLabelBanner.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me){
apri(new Apri(){
public void open(){
try{
Desktop.browse(new URL("http://www.securitywireless.info/index.html"));
}catch (Exception e){
System.out.println("errore");
}
}
});
};
});


jLabelBanner.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

ma nulla continua a non fuzionare...come mai?? qualcuno sa darmi una dritta
salvo_84 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2006, 17:40   #7
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Subito dopo la parentesi graffa del try scrivi:

System.out.println("NONNA!");

ricompila, esegui e clicca sull'etichetta. Sulla console (prompt del dos) compare la scritta "NONNA!" ?
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2006, 17:45   #8
salvo_84
Junior Member
 
Iscritto dal: May 2006
Messaggi: 23
bhè se la tua domanda era riconducibile al fatto se entrasse o meno nel blocco try....bhè....nn entra :-(
salvo_84 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2006, 17:51   #9
salvo_84
Junior Member
 
Iscritto dal: May 2006
Messaggi: 23
Wow!!!
ce l'ho fatta!!!
ho creato una nuova classe "AzioneConnetti" e nel mouseClicked(), il metodo che intercetta il click del mouse sulla label ho inserito semplicemente:
new AzioneConnetti();

la nuova classe l'ho fatta così:


import java.net.URL;
import org.jdesktop.jdic.desktop.Desktop;

public class AzioneConnetti {

public AzioneConnetti() {
postInizializza();
}

private void postInizializza() {
try{
Desktop.browse(new URL("http://www.google.it"));
System.out.println("ciauzzz");
}catch (Exception e){
System.out.println("errore");
}
}
}

ora la mia domanda è:
ma devo fare in modo che la classe sollevi qualche eccezione visto ke non l'ho fatto??
e poi non vedo l'utilità del blocco try/catch visto che sono io a inserire in manuale l'url....non si potrà mai verificare un eccezione sull'url, giusto??
salvo_84 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2006, 18:14   #10
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Visto, potenza del "metodo della nonna"!

Quel blocco try-catch cattura un tot di eccezioni, di tipi diversi. Tra queste ce n'è una di cui non puoi dire "è impossibile che si verifichi". Tale eccezione è la IOException prodotta da Desktop.browse nel caso in cui non sia individuabile il browser predefinito o la richiesta di apertura della pagina tramite il programma browser predefinito generi un qualche errore. Il controllo di chi sia il browser predefinito è nella mani dell'utente sul proprio sistema: nulla vieta che l'utente usi come browser predefinito una chiavica di programma che appena gli passi l'url manda a ramengo tutto quanto.

La teoria generale delle eccezioni in auge oggi dice che devi rilasciare un'eccezione quando ti pare o piace. Se ti pare o piace, rilasciala, se no trattienila.

Personalmente ritengo che questa teoria sia una cialtronata ma tra quello che penso e quello che si fa c'è un'abisso in cui non vorrei coinvolgerti .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
BYD, boom in Giappone: la sua prima kei ...
L'Europa mette sul piatto 1,5 miliardi d...
Google dichiara risolto il bug della bat...
Intel apre i segreti dei chip Atom a una...
FC 27 stravolgerà il gameplay: me...
Microsoft conferma la super app Copilot:...
Svolta per il vaccino anti-HIV: team ann...
Il governo USA 'compra' una quota di Glo...
Veeam offre supporto a sei nuovi hypervi...
WINDTRE BUSINESS apre alle imprese il da...
DEF CON vieta gli occhiali smart da 'per...
Keychron annuncia ZGM, il primo firmware...
Zuckerberg prevede miliardi di agenti IA...
Benzina sempre più cara, boom di ...
DualSense White a 59,99€: il controller ...
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:44.


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