2010-06-25 49 views
1

我創建了一個使用嵌入式HTML顯示消息的Java對話框。該消息應該包含一個鏈接,點擊該鏈接時,它應該激發一個事件(啓動另一個對話框)。我無法弄清楚如何去做。這真的有可能嗎?在Java對話框中的嵌入式HTML鏈接

下面是代碼:

message = new JLabel("<html>You have selected <i>"+registry_name+" "+ registry_version +"</i><BR> in the " +"<FONT COLOR=\"#0000FF\"><U><A href=\"javascript:popup();\" id=\"test-link\">container.</A></U></FONT>" +"<script type=\"text/javascript\">"+"function popup(){var generator=window.setVisible(true);}</script></html>"); 
    JOptionPane.showConfirmDialog(dialog.dialog, message , "Selection Window",JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE); 

回答

2

您可以創建一個適當的格式將JLabel,使其外觀和行爲像一個鏈接(藍色,並與「手」鼠標光標下劃線)。

public class Link extends JFrame { 
    public static void main(String[] args) { 
    new Link(); 
    } 

    public Link(){  
    JLabel link = new JLabel("<html><font color=\"#0000ff\"><u>The link</u></font></html>"); 
    link.setCursor(new Cursor(Cursor.HAND_CURSOR)); 
    link.addMouseListener(new MouseListener(){ 
     public void mouseClicked(MouseEvent e) { 
     System.out.println("Link was clicked"); 
     } 
     //other MouseListener methods 
    }); 

    add(link); 
    pack(); 
    setVisible(true);  
    } 
} 

不確定是否可以將鏈接放在同樣包含普通文本的JLabel中。在這種情況下,您可能需要創建多個JLabel。

1

您可以使用只讀JEditorPane並放置鏈接並使用HyperlinkListener。

請參閱javadoc JEditorPane的示例。