HyperlinkLabel - Hyperlinks in GUI-Komponenten
Aus Byte-Welt Wiki
Version vom 27. Mai 2014, 07:22 Uhr von L-ectron-x (Diskussion | Beiträge)
Gelegentlich kommt es vor, dass wir in einer Benutzeroberfläche eines Java-Programms Hyperlinks zu Web-Inhalten 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> Kategorie:Java-Codeschnipsel