ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
804
804
EMPFEHLEN
-
Hi,
Ich würde gerne so etwas wie ein Hyperlink Textfield haben, dass wenn ich mit der Maus rüberfahre sich "kenntlich" macht als solches. Gibt es so etwas bzw. wie könnte man das realisieren?
Grüsse
floggie
-
Hallo Floggie,
Schaul mal hier:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.IOException; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.event.MouseInputAdapter; public class LinkExample { JFrame frame = new JFrame(); JTextField tf = new JTextField(" www.google.de "); Font f = new Font("Serif", Font.PLAIN, 20); Font g = new Font("Serif", Font.BOLD, 15); Color c = Color.BLUE; Color d = Color.RED; public void example() { MouseListener link = new MouseInputAdapter() { public void mouseClicked(MouseEvent e) { try { Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler " + "www.google.de"); } catch (IOException e1) { } } public void mouseEntered(MouseEvent e) { tf.setFont(g); tf.setForeground(d); } public void mouseExited(MouseEvent e) { tf.setFont(f); tf.setForeground(c); } }; tf.setFont(f); tf.addMouseListener(link); tf.setForeground(c); tf.setEditable(false); tf.setHorizontalAlignment(JTextField.CENTER); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new FlowLayout()); frame.add(tf); frame.setSize(300,200); frame.setVisible(true); } public static void main(String[] args) { LinkExample le = new LinkExample(); le.example(); } }
Vg Erdal
-
05.01.06 11:59 #3
- Registriert seit
- Nov 2004
- Beiträge
- 284
Alternativ geht auch (benutzt du wie ein ganz normales Label -> jFrame.getContentPane.add(...) usw.):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.event.MouseEvent; /** * <p>Überschrift: JLinkLabel</p> * <p>Beschreibung: Ein anklickbares Label</p> * <p>Copyright: Copyright (c) 2004</p> * <p>Organisation: none</p> * @author Tobias Viehweger * @version 1.0 */ public class JLinkLabel extends JLabel implements MouseListener { private LinkLabelListener listener; private String text; private boolean underline; /** * Leerer Konstruktor */ public JLinkLabel() { setText(""); addMouseListener(this); this.text = text; underlineOnMouseOver(false); setHandCursor(false); } /** * * Konstruktor * * @param text Beschriftung des Labels */ public JLinkLabel(String text) { setText(text); addMouseListener(this); this.text = text; underlineOnMouseOver(true); setHandCursor(true); } /** * * Konstruktor * * @param text Beschriftung des Labels * @param underline true wenn bei Überfahren mit der Maus das Label * unterstrichen werden soll * */ public JLinkLabel(String text, boolean underline) { setText(text); addMouseListener(this); this.text = text; underlineOnMouseOver(underline); setHandCursor(true); } /** * * Konstruktor * * @param text Beschriftung des Labels * @param underline true, wenn bei Überfahren mit der Maus das Label * unterstrichen werden soll * * @param handCursor true, wenn bei Überfahren mit der Maus der Cursor * geändert werden soll */ public JLinkLabel(String text, boolean underline, boolean handCursor) { setText(text); addMouseListener(this); this.text = text; underlineOnMouseOver(underline); setHandCursor(handCursor); } /** * * Fügt dem Label einen Listener hinzu, damit auf Ereignisse reagiert * werden kann * * @param linkLabelListener Ein LinkLabelListener */ public void addLinkLabelListener(LinkLabelListener linkLabelListener) { listener = linkLabelListener; } public void mouseClicked(MouseEvent mouseEvent) { if (mouseEvent.getSource().equals(this) && listener != null) { listener.clickedLabel(mouseEvent); } } public void mouseEntered(MouseEvent mouseEvent) { if (mouseEvent.getSource().equals(this)) { if (underline) { setText("<html><u>" + text + "</u></html>"); } } } public void mouseExited(MouseEvent mouseEvent) { if (mouseEvent.getSource().equals(this)) { setText("<html>" + text + "</html>"); } } /** * * Setzt, ob sich der Cursor bei Überfahren mit der Maus ändert * * @param state true, wenn der Cursor eine Hand werden soll */ public void setHandCursor (boolean state) { if (state) { setCursor(new Cursor(Cursor.HAND_CURSOR)); }else { setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } } /** * * Setzt, ob das Label bei Überfahren mit der Maus unterstrichen werden * soll * * @param state true, wenn es unterstrichen werden soll */ public void underlineOnMouseOver (boolean state) { underline = state; } public void mousePressed(MouseEvent mouseEvent) { } public void mouseReleased(MouseEvent mouseEvent) { } }
Und der dazugehörige Listener (muss von deiner Klasse implementiert werden, wie ein ActionListener):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import java.awt.event.MouseEvent; /** * <p>Überschrift: </p> * <p>Beschreibung: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Organisation: none</p> * @author Tobias Viehweger * @version 1.0 */ public interface LinkLabelListener { public void clickedLabel(MouseEvent event); }
-
Hi,
Dank euch beiden. So ähnlich wie in der ersten Antwort hatte ich es auch probiert, kam bloss nicht so ganz klar mit den MouseEvents. Die zweite Lösung hat natürlich auch ihren Reiz.
Grüsse
floggie
Ähnliche Themen
-
Tab in Textfield
Von cognus im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 18.10.10, 16:05 -
TextField
Von pria im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 12.04.07, 08:17 -
TextField Array
Von GalaxyWarrior im Forum JavaAntworten: 11Letzter Beitrag: 27.03.06, 21:13 -
embedFonts nur für TextField?
Von Orphelina im Forum Flash PlattformAntworten: 17Letzter Beitrag: 15.09.05, 16:47 -
[C#] TextField
Von Badgott im Forum C/C++Antworten: 3Letzter Beitrag: 23.10.02, 14:43





Zitieren
Login





