Links in JTextArea?

Status
Nicht offen für weitere Antworten.

Live

Mitglied
Hallo,

ist es möglich Strings, die in einer (nicht editierbaren) JTextArea angezeigt werden, mit Links o.ä. zu hinterlegen?
Mein Ziel ist - wie es bei einem Button über einen Actionlistener möglich ist - durch Klicken auf den Text z.B. ein weiteres Fenster mit entsprechenden Daten zu öffnen.
 
Danke für die extrem schnelle Antwort!

Genau mit dem habe ich auch schon rumexperimentiert - bin aber kläglichst gescheitert - ein passendes Beispiel konnte ich auch bei Google nicht finden... 🙁
Vielleicht kann mir ja jemand helfen:

Code:
import java.awt.BorderLayout;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class Linktest extends JFrame implements HyperlinkListener{
	
	public Linktest(){
		super("Link-Test");
        setSize(500,500);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        t = new JEditorPane();       
        t.setEditable(false);
        t.addHyperlinkListener(this);
        final JScrollPane scrolltext = new JScrollPane(t);
        getContentPane().add(scrolltext, BorderLayout.CENTER);
		
		String text1 = "T1";
		String text2 = "T2";       

        // ???
	}
	
	public void hyperlinkUpdate(HyperlinkEvent arg0) {
		// ???		
	}

	public JEditorPane t;
}

In dem Beispiel sollen im Textfeld einfach nur die beiden Texte text1 und text2 angezeigt werden und beim Klick folgendermaßen unterschliedlich reagieren:
text1: JOptionPane.showMessageDialog(new Window(new Frame(), "Hallo!"))
text2: JOptionPane.showConfirmDialog(new Window(new Frame(), "Tschüss!"))
(Die Logik der beiden Dialoge sei jetzt einfach mal gegeben 😉 )
 
Hi,
fülle mal den hyperlinkUpdate. z.B.

Code:
    public void hyperlinkUpdate(HyperlinkEvent h_event)
    {
        CommandControl cc = CommandControl.getTheInstance();

        if(h_event.getEventType() == HyperlinkEvent.EventType.ENTERED)
        {
             // Tu was
        }
        else if(h_event.getEventType() == HyperlinkEvent.EventType.EXITED)
        {
             // Tu was
        }
        else if(h_event.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
        {
             // Tu was
        }
     }
 
Der ContentType muss HTML sein:
Code:
t.setContentType("text/html");

Es muss HTML drin stehen:
Code:
t.setText("Link 1: [url="T1>T1</a>"]T2[/url]");

Der Listener muss darauf reagieren:
Code:
  public void hyperlinkUpdate( HyperlinkEvent arg0 ) {
    if ( arg0.getEventType() == HyperlinkEvent.EventType.ACTIVATED ) {
      if ( "T1".equals(arg0.getDescription()) ) {
        JOptionPane.showMessageDialog( Linktest.this, "Hallo!" );
      } else {
        JOptionPane.showMessageDialog( Linktest.this, "Tschüss!" );
      }
    }
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben