# Mit  JOptionPane einen Link darstellen



## duddits (26. Mai 2006)

Hi,

ich möchte im folgenden Quellcode Auszug einen Link darstellen:

```
JOptionPane
                    .showMessageDialog(
                    null,
                    "J3XX0\nVersion: 0.3\n Mor infos under    http://www.network-and-security.de",
                    "J3XXO - Über den Autor", 1);
```

Hier soll _htpp://www......_ der Link sein aber, ich weiß nicht wie ich das geanu machen muss.

Ich hoffe Ihr könnt mir da weiterhelfen und bedanke mich schonmal im Voraus für eure Hilfe.

mfg duddits


----------



## dieta (26. Mai 2006)

Das könnte mit
"<html><head><title></title></head><body>J3XX0
Version: 0.3
 Mor infos under    <a href=\"http://www.network-and-security.de\">http://www.network-and-security.de</a></body></html>"
klappen, denn so weit ich weis, können JLabes ansatzweise HTML. Ob sie auch Links unterstützen weis ich nicht, hab es nicht getestet. Falls nicht, man kann ja so weit ich weis auch eigene Butefinieren. Dann mach halt nen Button mit z.B. "Visit our Website" oder so.


----------



## Guest (27. Mai 2006)

Hi,

ok danke werde das mal probieren.

mffg duddits


----------



## RawBit (27. Mai 2006)

das funktioniert nicht

du kannst bei jlabel mit dem attribut <a> nur nen link stylen (dieser funktioniert aber nicht, ist nicht klickbar) du müsstest halt dem jlabel nen handcursor setzten und nen mouselistener

bei joptionpane geht soweitich weiß garkein html

wenn du so nen link brauchst musst du dir nen eigenen jdialog schreiben...


----------



## The_S (27. Mai 2006)

Hackl hat gesagt.:
			
		

> wenn du so nen link brauchst musst du dir nen eigenen jdialog schreiben...



mit z. B. nem JEditorPane und zugehörigen HyperlinkListener


----------



## dieta (27. Mai 2006)

Ich hab's jetzt mal ausprobiert. Das JOptionPane kann schon HTML, aber wie gesagt, wird der Link nur blau hervorgehoben.
Oder du machst es so (Sieht vielleicht nicht ganz so elegant aus, ist aber vielleicht ein Bisschen unkomplizierter als die Inplementierung eines Hypelink-Listeners etc.):

```
JPanel p = new JPanel();
		JButton b = new JButton("Visit our Homepage");
		b.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				try
				{
					Runtime.getRuntime().exec("C:\\Programme\\Internet Explorer\\IEXPLORE.EXE http://www.network-and-security.de");
				}
				catch(Exception e)
				{
				}
			}
		});
		JLabel l = new JLabel("<html><head><title></title></head><body>J3XX0
Version: 0.3
 Mor infos under     http://www.network-and-security.de</body></html>");
		p.add(l);
		p.add(b);
		JOptionPane.showMessageDialog(null,p,"J3XXO - Über den Autor", 1);
```


----------



## RawBit (27. Mai 2006)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Hackl hat gesagt.:
> 
> 
> 
> ...



nein brauchst du nicht, das is ja das gute das kann man sich (bei meiner methode nen link in java zu schreiben) sparen...


```
JLabel link = new JLabel("<html><font color=0000FF><u>Unsere Homepage</u></font></html>");
link.setCursor( new Cursor(Cursor.HAND_CURSOR) ); //Ich hoffe ich hab das jetzt mal auf anhieb richtig eingetippt
link.addMouseListener( new MouseAdapter() {
    public void mouseReleased( MouseEvent me ) {
        if(me.getButton()==me.BUTTON1) {
            try { 
                Runtime.getRuntime().exec("C:\\Programme\\Internet Explorer\\IEXPLORE.EXE http://www.network-and-security.de"); 
            } 
            catch(Exception e) 
            { 
            }
        }
    }
}
```
^ Das ist mein Code für Links den ich immer benutze (Toll oda  :wink: )



			
				dieta hat gesagt.:
			
		

> Ich hab's jetzt mal ausprobiert. Das JOptionPane kann schon HTML...



wenn man es so schreibt wie in deinem code, ja da du html nicht direkt ins joptionpane schreibst sondern in ein jlabel und das kann html...

wenn du aber das schreibst: JOptionPane.showMessageDialog(null, "<html>das ist *fetter* text</html>", "Dialog", JOptionPane.PLAIN_MESSAGE); geht das nicht wirklich...


naja aber problem dieses theards dürfte ja inzwischen schon gelöst sein...


----------



## The_S (27. Mai 2006)

joa, das funktioniert so lange, wie das JLabel aus genau einem einzigen Link besteht. Haste zusätzlich Text mit drin, der nicht verlinkt werden soll bzw. einen zweiten Link, wirds schon leicht komplexer  . Kommt halt dann auf den Verwendungszweck an.


----------



## RawBit (27. Mai 2006)

gut das stimmt

aber diesen fall hab ich noch nie gehabt


----------



## duddits (27. Mai 2006)

Hi,

an sich gefällt mir die Lösung ganz gut und ich kann diese auch gut nachvollziehen, aber da ich das ganze unter Linux entwickel und auch möchte das es unter Linux sowie Windows läuft, wäre es glaube ich sinnvoller sich mit dem JEditorPane und zugehörigen HyperlinkListener zu versuchen oder liege ich da faslch?

Trotzallem schon vielen dank für eure Unterstützung.

EDIT: Habe es jetzt der einfach halt halber so gemacht wie Ihr es gelöst habt, habe dabei nur im catch Block noch eine Runtime aufgerufen und anstelle des IE's habe ich den Firtefox gewählt, da dieser in vielen Linux Distries schon standartmäßig dabei ist.

mfg duddits


----------



## Illuvatar (27. Mai 2006)

Also vor Java 6 hast du ohne Zusatzpackages keine Möglichkeit plattformunabhängig einen externen Browser zu öffnen, da kannst du höchstens os.name abfragen.
In einer JEditorPane könntest du die andere Seite in die JEditorPane laden. Allerdings ist die HTMl-Unterstützung von dieser nicht so toll.


----------

