A) Desktop – JDK 1.6
In diesem Kapitel möchte ich Ihnen die Klasse java.awt.Desktop
vorstellen. Mit dieser Klasse ist es möglich Dateien mit dem zugeordnetem Programm des Betriebssystems zu öffnen, editieren und auszudrucken. Des Weiteren kann eine URL mit dem Standardbrowser geöffnet, und das E-Mail Programm des Rechners gestartet werden.
Bevor Sie diese Klasse verwenden, sollten Sie zuerst überprüfen, ob Desktop
überhaupt von Ihrem Betriebssystem unterstützt wird. Hierzu rufen Sie folgende, statische Methode auf:
Desktop.isDesktopSupported();
Gibt diese Methode true
zurück, wird diese Klasse durch dieses Betriebssystem unterstützt. Anschließend können Sie mit
Desktop desk = Desktop.getDesktop();
eine Instanz erzeugen.
Auch wenn die Klasse vom Betriebssystem unterstützt ist, heißt das noch lange nicht, dass auch alle Funktionen unterstützt werden. Dies kann mithilfe der Methode Desktop#isSupported
und der Enumeration Desktop.Action
überprüft werden.
import java.awt.Desktop; public class DesktopTest { public static void main(String[] args) { if (Desktop.isDesktopSupported()) { System.out.println("Desktop-Klasse wird unterstützt"); Desktop desk = Desktop.getDesktop(); System.out.println("Der Browser kann geöffnet werden: " + desk.isSupported(Desktop.Action.BROWSE)); System.out.println("Eine Datei kann editiert werden: " + desk.isSupported(Desktop.Action.EDIT)); System.out.println("Das Mail-Programm kann geöffnet werden: " + desk.isSupported(Desktop.Action.MAIL)); System.out.println("Eine Datei kann geöffnet werden: " + desk.isSupported(Desktop.Action.OPEN)); System.out.println("Eine Datei kann gedruckt werden: " + desk.isSupported(Desktop.Action.PRINT)); } } }
Nun können die gewünschten Funktionen verwendet werden. Um eine Datei zu öffnen, bearbeiten oder drucken, wird die gewünschte Datei in Form eines File
-Objekts der entsprechenden Methode (welche alle drei eine IOException
werfen können) übergeben.
File open = new File("C:/dokument.doc"); File edit = new File("C:/webseite.html"); File print = new File("C:/berechnung.xls"); if (Desktop.isDesktopSupported()) { Desktop desk = Desktop.getDesktop(); try { desk.open(open); desk.edit(edit); desk.print(print); } catch (IOException e) { e.printStackTrace(); } }
Um eine URL im Standardbrowser zu öffnen wird ähnlich vorgegangen. Übergeben Sie der Methode Desktop#browse
die gewünschte Adresse als URI
-Objekt und schon öffnet sich der Browser und zeigt die gewünschte Seite an. Auch diese Methode kann eine IOException
werfen. Des weiteren kann bei der Erstellung einer neuen URI
eine URISyntaxException
ausgelöst werden.
try { desk.browse(new URI("http://www.java-blog-buch.de")); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); }
Beim Aufruf des Mail-Programms gibt es mehrere Möglichkeiten. Die einfachere ist einfach das Mail-Programm aufzurufen – ohne weitere Parameter. Dadurch wird das Standardformular zum Versenden einer neuen E-Mail geöffnet. Sie haben es erraten: auch bei dieser Methode muss eine evtl. auftretende IOException
abgefangen werden!
try { desk.mail(); } catch (IOException e) { e.printStackTrace(); }
Bei der komplexeren Variante wird dieser Methode noch eine URI
als Parameter übergeben. Diese URI enthält die mailto-Spezifikationen. Dadurch ist es möglich für die zu versendende E-Mail bereits Daten wie Empfänger, Betreff, Inhalt, … vor zu blenden.
try { desk.mail(new URI("mailto:webmaster@java-blog-buch.de" + "?subject=Feedback" + "&body=Tolle%20Seite!")); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); }
Sag mal, gibts da nicht ne Alternative Klasse für Java 1.5?
mfg
Hi thE_29,
eine solche Komponente gibt es in jdic auch vor Java 1.6. Beispiel.
Je nach Anforderungen könnte so etwas auch mit SWT gehen. Oder eben über den nicht gerade eleganten Weg mit Runtime#exec.
Gruß
Stefan