tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
804
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    floggie floggie ist offline Mitglied Bronze
    Registriert seit
    Oct 2005
    Beiträge
    38
    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
     

  2. #2
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    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
     

  3. #3
    javaprogger1987 javaprogger1987 ist offline Mitglied Brokat
    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 &Uuml;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 &Uuml;berfahren mit der Maus das Label
       *                  unterstrichen werden soll
       *
       * @param handCursor true, wenn bei &Uuml;berfahren mit der Maus der Cursor
       *                   ge&auml;ndert werden soll
       */
      public JLinkLabel(String text, boolean underline, boolean handCursor) {
        setText(text);
        addMouseListener(this);
        this.text = text;
        underlineOnMouseOver(underline);
        setHandCursor(handCursor);
      }
     
      /**
       *
       * F&uuml;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 &Uuml;berfahren mit der Maus &auml;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 &Uuml;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);
     
    }
     

  4. #4
    floggie floggie ist offline Mitglied Bronze
    Registriert seit
    Oct 2005
    Beiträge
    38
    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

  1. Tab in Textfield
    Von cognus im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 18.10.10, 16:05
  2. TextField
    Von pria im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 12.04.07, 08:17
  3. TextField Array
    Von GalaxyWarrior im Forum Java
    Antworten: 11
    Letzter Beitrag: 27.03.06, 21:13
  4. embedFonts nur für TextField?
    Von Orphelina im Forum Flash Plattform
    Antworten: 17
    Letzter Beitrag: 15.09.05, 16:47
  5. [C#] TextField
    Von Badgott im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 23.10.02, 14:43