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();
}

2 Replies to “A) Desktop – JDK 1.6”

  1. Stefan Kiesel

    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

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.