# JButton als Hyperlink ?



## Spider (30. Jul 2007)

Hallo weis jemand ob es möglich ist einen JButton als Hyperlink für eine Website zu benutzen? 
VL. hat da jemand schon Erfahrungen gesammelt?


----------



## Wildcard (30. Jul 2007)

Du meinst in einem Applet?
Die Frage ist eigentlich: Womit hast du ein Problem?


----------



## Spider (30. Jul 2007)

Ich arbeite gerade an einer GUI und ich möchte wenn man auf ein Button klickt das sich der Browser öffnet mit der jeweiligen Seite


----------



## Wildcard (30. Jul 2007)

Desktop#browser(URL)


----------



## Spider (30. Jul 2007)

Wie ich muss nur meinen Button das hier einfügen sorry das ich so dumm Fragen muss aber ist my erster Versuch ;-)

Desktop#browser(URL)?


----------



## JPKI (30. Jul 2007)

```
button.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
   java.awt.Desktop.browser(new URL("http://www.url.de"));
 }
});
```


----------



## Spider (30. Jul 2007)

Hi danke allerdings bekomm ich jetzt eine Fehlermeldung
 an dieser Stelle:

JButton tb1 = new JButton("Home");

tb1.addActionListener(new ActionListener() { 
	  public void actionPerformed(ActionEvent e) { 
	   java.awt.Desktop.*browse*(new URL("http://www.google.de")); 
	} 
	});


Was muss da den genau hingescvhrieben werden Leider zeigt mir Eclipse keine Alternative


----------



## JPKI (30. Jul 2007)

Ah ja...
Die Funktion "browse" benötigt ein URI-Objekt (kein URL-Objekt).
Außerdem gibt's die Klasse java.awt.Desktop erst seit Java 6.


----------



## Spider (30. Jul 2007)

mmh also i hab die Version 6.0 drauf mmh versthe ich leider net wo da der Fehler liegt wie gesagt my Code lautet folgendermaßen:


JButton tb1 = new JButton("Home");

tb1.addActionListener(new ActionListener() { 
	  public void actionPerformed(ActionEvent e) { 
*java.awt.Desktop.browse(new URI("http://www.google.de")); *	} 
	});


----------



## red99 (30. Jul 2007)

unter windows geht für beliebige dateien dass:

```
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
```


----------



## JPKI (30. Jul 2007)

Hast du das Paket java.awt.event importiert??
Seeeehr hilfreich wär's, wenn du die Fehlermeldung, die dein Compiler ausgibt, posten würdest.


----------



## Spider (30. Jul 2007)

Ja ich hab diese importiert leider kommt immer *browse* als Fehler

tb1.addActionListener(new ActionListener() { 
	  public void actionPerformed(ActionEvent e) { 
	   java.awt.Desktop.*browse*(new URI("http://www.google.de")); 
	} 
	});


----------



## JPKI (30. Jul 2007)

> kommt immer browse als Fehler
Schon gewusst: Nachts ist es dunkler als draußen!
Diese Aussage hat genausoviel Informationswert wie deine :wink:

Poste doch einfach mal die Fehlerausgabe deines Compilers.


----------



## Spider (30. Jul 2007)

Wenn ich auf übersetzen klick kommt diese meldung


Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method browse(URI) in the type Desktop is not applicable for the arguments (URI)

	at idee.gridbaglayout.erzeuge(gridbaglayout.java:69)
	at idee.gridbaglayout.<init>(gridbaglayout.java:21)
	at idee.gridbaglayout.main(gridbaglayout.java:176)


----------



## JPKI (30. Jul 2007)

Unresolved compilation problem:

Lösch mal alle CLASS-Dateien im Projektordner und kompilier noch mal.


----------



## Spider (30. Jul 2007)

Sorry aber selbst dan nkommt immer die selbe Meldung er unterstreicht mir immer das Wort *BROWSE*
tb1.addActionListener(new ActionListener() { 
	  public void actionPerformed(ActionEvent e) { 
	   java.awt.Desktop.*browse*(new URI("http://www.google.de")); 
	} 
	});


----------



## JPKI (30. Jul 2007)

Kapier ich nicht...
Poste mal'n Screenshot.
Wenn du nicht im Forum angemeldet bist, kannst du Bilder bei imageshack reinsetzen.


----------



## red99 (30. Jul 2007)

ist doch klar denn .browse ist keine statische funktion so muss mann das machen:

```
Desktop d = Desktop.getDesktop();
		
		try {
			d.browse(new URI("www.wikipedia.de"));
		} catch (IOException e) {
			e.printStackTrace();
		} catch (URISyntaxException e) {
			e.printStackTrace();
		}
```


----------



## JPKI (30. Jul 2007)

Das ist mir jetzt peinlich...   
Naja, ich muss ehrlich sagen, dass ich die Desktopklasse noch nicht benutzt habe (ich benutze [noch] Java 5).


----------



## Spider (30. Jul 2007)

so  hab das Bild hochgeladen 
http://img509.imageshack.us/my.php?image=hyperlinklj3.jpg


----------



## Spider (30. Jul 2007)

Red 99 wie meinst du das genau mit dem Code ??Tut mir echt leid aber i blicks grad echt net  wnen ich dein Code kopiere bekomm ich nur noch rote Balken


----------



## JPKI (30. Jul 2007)

Du musst den Code von red99 und mir kombinieren :wink:

```
button.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
Desktop d = Desktop.getDesktop();
      
      try {
         d.browse(new URI("www.wikipedia.de"));
      } catch (IOException e) {
         e.printStackTrace();
      } catch (URISyntaxException e) {
         e.printStackTrace();
      } 
}
});
```


----------



## Spider (30. Jul 2007)

hi danke für den Code

aber Browse will einfach net 

The method browse(URI) in the type Desktop is not applicable for the arguments (URI)


----------



## JPKI (30. Jul 2007)

Ich seh den Fehler!
Nenn die Exception-Variablen in ex um, denn e ist schon an das ActionEvent vergeben.

Außerdem musst du noch java.io.IOException und java.net.URISyntaxException importieren.


----------



## Spider (30. Jul 2007)

Also die Imports sind da und e hab ich au in ex umbenannt trotzdem sagt Eclipse *Browse..... *


----------



## JPKI (30. Jul 2007)

Hrmpf... Wassen noch!
Kann's sein, dass du bereits eine Variable oder Klasse Desktop genannt hast??? Gib mal explizit an:
java.awt.Desktop d = java.awt.Desktop.getDesktop()...


----------



## Spider (30. Jul 2007)

Das is ja der  Witz i hab genau das so gemacht wie du mir empfohlen hast ne hab keine Variable namens Desktop gehabt versteh i echt net warum der immer den selben Fehler bringt


----------



## JPKI (30. Jul 2007)

Nachtrag: Was ich nicht verstehe... Mit meinen obig genannten Korrekturen funktioniert der Code bei mir...


----------



## Spider (30. Jul 2007)

Könntest du mir bitte zeigen wie du es gecoded hast damit es funtzt?


----------



## JPKI (30. Jul 2007)

```
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*;
import javax.swing.*;

package de.jpki.test.java6;

public class DesktopTest extends JFrame {

  public static void main(String args[]) {

   new DesktopTest();
 }

  public DesktopTest() {

   super("de.jpki.test.java6.DesktopTest");
   setSize(300,300);
   setDefaultCloseOperation(EXIT_ON_CLOSE);

   JButton button = new JButton("Hier klicken");
   button.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {

       Desktop d = Desktop.getDesktop();
     
        try {
         d.browse(new URI("www.wikipedia.de"));
       } catch (IOException ex) {
         ex.printStackTrace();
       } catch (URISyntaxException ex) {
         ex.printStackTrace();
       }
   }});

   getContentPane().add(button);
   setVisible(true);
 }
}
```


----------



## Spider (30. Jul 2007)

DANKE also dein Code funtkioniert bie mir auch !! na dann kuck ich mal wo der Fehler liegt ganz großes Danke schön!!!!


----------



## JPKI (30. Jul 2007)

Bitte sehr. Manchmal ist echt der Wurm drin... Ich würde für heute aufhören und mal 'ne Nacht drüber schlafen. Morgen findest du den Fehler wohl eher.


----------



## Spider (30. Jul 2007)

So hab den Fehler es lag am  import java.net.*; 

Ich hatte zwat  java.net ...... drin stehn aber nicht die allgemeine angabe dadurch wird browse fehlerfrei übersetzt!


----------

