HyperlinkLabel - Hyperlinks in GUI-Komponenten: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
Gelegentlich kommt es vor, dass wir in einer Benutzeroberfläche eines Java-Programms Hyperlinks zu Web-Inhalten bereit stellen möchten. | Gelegentlich kommt es vor, dass wir in einer Benutzeroberfläche eines Java-Programms Hyperlinks zu Web-Inhalten oder für E-Mails bereit stellen möchten. | ||
Folgende fertige Komponente wird dies erledigen können. | Folgende fertige Komponente wird dies erledigen können. | ||
Version vom 15. Juni 2014, 18:34 Uhr
Gelegentlich kommt es vor, dass wir in einer Benutzeroberfläche eines Java-Programms Hyperlinks zu Web-Inhalten oder für E-Mails bereit stellen möchten. Folgende fertige Komponente wird dies erledigen können.
<code=java> import java.awt.Cursor; import java.awt.Desktop; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.IOException; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; import javax.swing.JLabel; import javax.swing.Icon;
/**
* HyperlinkLabel dient zur Bereitstellung von Hyperlinks mit entsprechendem * Verhalten in einem JLabel-Typ. */
public class HyperlinkLabel extends JLabel implements MouseListener {
private URL url; protected final static Cursor HAND_CURSOR = new Cursor(Cursor.HAND_CURSOR); protected final static Cursor DEFAULT_CURSOR = new Cursor(Cursor.DEFAULT_CURSOR);
/**
* Erzeugt ein leeres HyperLinkLabel.
* @see javax.swing.JLabel()
*/
public HyperlinkLabel() {
addMouseListener(this);
}
/**
* Erzeugt ein neues HyperLinkLabel, welches den Textinhalt für den Hyperlink
* aus der übergebenen URL entnimmt.
* @param url Die URL, die als Hyperlink und Textinhalt verwendet werden soll.
* @see javax.swing.JLabel(java.lang.String)
*/
public HyperlinkLabel(URL url) {
this(url.toString(), url);
}
/**
* Erzeugt ein neues HyperLinkLabel, welches das übergebene Bild mit der
* übergebenen URL verlinkt.
* @param image Das Bild, das angezeigt werden soll.
* @param url Die URL, mit der das Bild verlinkt werden soll.
* @see javax.swing.JLabel(javax.swing.Icon)
*/
public HyperlinkLabel(Icon image, URL url) {
super(image);
this.url = url;
addMouseListener(this);
}
/**
* Erzeugt ein neues HyperlinkLabel, welches das übergebene Bild mit der
* übergebenen URL verlinkt und den Inhalt horizontal auf der Komponente
* nach dem Wert des Alignments ausrichtet.
* @param image Das Bild, das angezeigt werden soll.
* @param horizontalAlignment Das Atrribut zum horizontalen Ausrichten des Inhaltes.
* @param url Die URL, mit der das Bild verlinkt werden soll.
* @see javax.swing.JLabel(javax.swing.Icon, int)
*/
public HyperlinkLabel(Icon image, int horizontalAlignment, URL url) {
this(image, url);
setHorizontalAlignment(horizontalAlignment);
}
/**
* Erzeugt ein neues HyperlinkLabel, welches eine URL und einen beschreibenden
* Text für den Hyperlink entgegennimmt.
* @param text Der Hyperlink-Text.
* @param url Die URL, mit der der Text verlinkt werden soll.
* @see javax.swing.JLabel(java.lang.String)
*/
public HyperlinkLabel(String text, URL url) {
super("<html><a href="+url.toString()+">"+text+"</a></html>");
this.url = url;
addMouseListener(this);
}
/**
* Erzeugt ein neues HyperlinkLabel, einen beschreibenden Text für den Hyperlink
* und ein Bild mit der übergebenen URL verlinkt. Der Inhalt wird dabei horizontal
* auf der Komponente nach dem Wert des Alignments ausrichtet.
* @param text Der Hyperlink-Text.
* @param image Das Bild, das angezeigt werden soll.
* @param horizontalAlignment Das Atrribut zum horizontalen Ausrichten des Inhaltes.
* @param url Die URL, mit der der Text und das Bild verlinkt werden sollen.
* @see javax.swing.JLabel(java.lang.String, javax.swing.Icon, int)
*/
public HyperlinkLabel(String text, Icon image, int horizontalAlignment, URL url) {
this(text, horizontalAlignment, url);
setIcon(image);
}
/**
* Erzeugt ein neues HyperlinkLabel, welches eine URL und einen beschreibenden
* Text für den Hyperlink entgegennimmt. Der Inhalt wird dabei horizontal
* auf der Komponente nach dem Wert des Alignments ausrichtet.
* @param text Der Hyperlink-Text.
* @param horizontalAlignment Das Atrribut zum horizontalen Ausrichten des Inhaltes.
* @param url Die URL, mit der der Text verlinkt werden soll.
* @see javax.swing.JLabel(java.lang.String, int)
*/
public HyperlinkLabel(String text, int horizontalAlignment, URL url) {
this(text, url);
setHorizontalAlignment(horizontalAlignment);
}
/**
* Gibt die derzeit gesetzte URL des HyperlinkLabels zurück, mit der die
* Inhalte verlinkt sind.
* @return Die verlinkte URL.
*/
public URL getURL() {
return url;
}
/**
* Setzt eine neue URL, mit der das HyperlinkLabel verlinkt werden soll.
* @param url Die URL zur Verlinkung der Inhalte des HyperlinkLabels.
*/
public void setURL(URL url) {
this.url = url;
}
/**
* @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
*/
@Override
public void mouseClicked(MouseEvent e) {
if (Desktop.isDesktopSupported()) {
try {
Desktop.getDesktop().browse(url.toURI());
} catch (MalformedURLException ex) {
System.err.println(ex);
} catch (URISyntaxException ex) {
System.err.println(ex);
} catch (IOException ex) {
System.err.println(ex);
}
}
}
/**
* @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
*/
@Override
public void mousePressed(MouseEvent e) {
}
/**
* @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
*/
@Override
public void mouseReleased(MouseEvent e) {
}
/**
* @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
*/
@Override
public void mouseEntered(MouseEvent e) {
setCursor(HyperlinkLabel.HAND_CURSOR);
}
/**
* @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
*/
@Override
public void mouseExited(MouseEvent e) {
setCursor(HyperlinkLabel.DEFAULT_CURSOR);
}
} </code=java>
