Avatar billede riversen Nybegynder
27. december 2002 - 16:48 Der er 21 kommentarer og
2 løsninger

Insætte et link i JTextArea

Hvordan kan jeg lave et link i noget tekst? både mailto link og alm. http link?
Avatar billede arne_v Ekspert
27. december 2002 - 17:09 #1
Øh.

JTextArea er GUI alias fat client ikke ? Og http og mailto links
er noget man bruger i browser alias thin client ikke ?

Så hvad vil du ?

Klikke på noget i din GUI og så starter den browseren med linket eller ... ?
Avatar billede dsj Nybegynder
27. december 2002 - 17:40 #2
Du skal bruge JEditorPane i stedet, den fortolker nemlig html.
Avatar billede riversen Nybegynder
27. december 2002 - 20:08 #3
arne_v: ja...og det skal helst se ud ligesom eksperten@riversen.dk fx eller http://www.riversen.dk
Avatar billede riversen Nybegynder
27. december 2002 - 20:10 #4
dsj: ok...hvis jeg vil have noget tekst i en JFrame, som fx ser sådan ud:

Besøg min side på http://www.riversen.dk hvordan skal det så gøres?
Avatar billede arne_v Ekspert
27. december 2002 - 20:20 #5
Jeg tror at dit bedste håb er at JEditorPane og almindelig
HTML kan løse problemet.

Hvis du skal til at lave en almindelig widget med, så er det
ganske vist nemt at lave teksten, men klik skal så kalde
Runtime.getRuntime().exec og hvad skal du kalde den med ?
Det bliver platforms-specifik og du havner nemt i store
problemer med at bestemme hvad der skal til for at
starte browseren korrekt !
Avatar billede dsj Nybegynder
27. december 2002 - 20:29 #6
Se http://www.eksperten.dk/spm/295511 for hvordan man åbner et link i en browser.
Avatar billede arne_v Ekspert
27. december 2002 - 20:35 #7
Den kode er nydelig, men stadigvæk kun en 98% løsning.

Code snippet:
        switch (jvm) {
...
            case OTHER:
                // Assume that we're on Unix and that Netscape is installed
Avatar billede riversen Nybegynder
27. december 2002 - 20:41 #8
gider en af jer lave et hurtigt eksempel med JEditorPane?
Avatar billede riversen Nybegynder
27. december 2002 - 20:47 #9
har gjort sådan her

new JEditorPane( "text/html", "mintekstsomindeholderlink" );

linket bliver vist fint nok blå og understreget, men der sker ingenting ved klik
Avatar billede dsj Nybegynder
27. december 2002 - 21:41 #10
Her er et eksempel, hvor du bruger klassen fra ovenstående link:

  JEditorPane editor = new JEditorPane();
  editor.addHyperlinkListener(new Hyperactive());

  class Hyperactive implements HyperlinkListener {
    public void hyperlinkUpdate(HyperlinkEvent e) {
      if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
        JEditorPane pane = (JEditorPane) e.getSource();
        if (e instanceof HTMLFrameHyperlinkEvent) {
        } else {
          try {
              BrowserLauncher.openURL(e.getURL().toString());
          } catch (Throwable t) {
              t.printStackTrace();
          }
        }
      }
    }
  }
Avatar billede riversen Nybegynder
27. december 2002 - 21:45 #11
ok...jeg dropper det...lader til det ikke bliver noget ordentligt. Havde regnet med man kunne gøre ligesom i en e-mail hvor man bare klikker på linket og så åbner det program der er assosieret med internetsider.
Avatar billede dsj Nybegynder
27. december 2002 - 22:35 #12
øhhh, det jeg lige har skrevet er lige præcis det du vil...
Avatar billede riversen Nybegynder
28. december 2002 - 10:14 #13
men det virker jo ikke i alle tilfælde
Avatar billede riversen Nybegynder
28. december 2002 - 10:29 #14
ok jeg har prøvet nu

String info = "Besøg desuden min hjemmeside på <a href='http://www.riversen.dk'>hej</a>";

JEditorPane editorPane = new JEditorPane( "text/html", info );
editorPane.addHyperlinkListener(new Hyperactive());

class Hyperactive implements HyperlinkListener
{
  public void hyperlinkUpdate(HyperlinkEvent e)
  {
    if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
    {
      JEditorPane pane = (JEditorPane) e.getSource();
      if (e instanceof HTMLFrameHyperlinkEvent)
      {
      }
      else
      {
        try
        {
            BrowserLauncher.openURL(e.getURL().toString());
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
      }
    }
  }
}

Der sker intet når jeg trykker på hej
Avatar billede riversen Nybegynder
28. december 2002 - 10:30 #15
musen bliver heller ikke til en hånd når jeg fører den over linket
Avatar billede riversen Nybegynder
28. december 2002 - 10:42 #16
setEditable( false ) og så virker det :-)...jeg siger mange tak!
Avatar billede riversen Nybegynder
28. december 2002 - 10:50 #17
hmmm...prøvede at insætte et billede <img src='http://web.icq.com/whitepages/online?icq=19463099&img=21'> lige for at prøve, men det blev ikke vist...er der noget specielt med det? Der blev bare vist en firkant hvor billedet skulle være som om det ikke er tilgængeligt
Avatar billede dsj Nybegynder
28. december 2002 - 17:50 #18
Du skal huske at placere billedet i det korrekte bibliotek i forhold til din klassefil...
Avatar billede arne_v Ekspert
28. december 2002 - 17:54 #19
Øh. Hans URL antyder at billedet ikke ligger lokalt !
Avatar billede dsj Nybegynder
28. december 2002 - 18:00 #20
Øh ok, have ikke lige set...
Avatar billede arne_v Ekspert
28. december 2002 - 20:08 #21
Spørgsmålet er om konstruktionen i det hele taget virker.

Det vil jo kræve at Swing ikke bare kan formatere HTML men
også sende HTTP requests.
Avatar billede riversen Nybegynder
29. december 2002 - 09:32 #22
arne_v: det kan det nok ikke så...det skulle bare lige prøves :-)
Avatar billede arne_v Ekspert
29. december 2002 - 11:28 #23
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester