2010-10-19 41 views
12

Làm cách nào để tạo siêu kết nối trong Hộp thoại JFace khi nhấp vào mở liên kết trong trình duyệt web mặc định. Một ví dụ đầy đủ sẽ hữu ích. Tôi biết có một gói org.eclipse.jface.text.hyperlink nhưng tôi không thể tìm thấy một ví dụ phù hợp.Làm cách nào để thêm siêu kết nối vào Hộp thoại JFace

Trả lời

20

Bạn có đang chạy ứng dụng RCP không?

Nếu vậy, thì đoạn mã sau sẽ mở liên kết của bạn trong trình duyệt OS mặc định:

// 'parent' is assumed to be an SWT composite 
Link link = new Link(parent, SWT.NONE); 
    String message = "This is a link to <a href=\"www.google.com\">Google</a>"; 
    link.setText(message); 
    link.setSize(400, 100); 
    link.addSelectionListener(new SelectionAdapter(){ 
     @Override 
     public void widgetSelected(SelectionEvent e) { 
       System.out.println("You have selected: "+e.text); 
       try { 
       // Open default external browser 
       PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(new URL(e.text)); 
       } 
      catch (PartInitException ex) { 
       // TODO Auto-generated catch block 
       ex.printStackTrace(); 
      } 
      catch (MalformedURLException ex) { 
       // TODO Auto-generated catch block 
       ex.printStackTrace(); 
      } 
     } 
    }); 

Ở trên giả định rằng bạn không muốn để quét văn bản hiện hành đối với các hyperlink mà chỉ đơn giản muốn tạo một lập trình. Nếu trước đây là bắt buộc thì bạn sẽ cần phải sử dụng API từ các gói văn bản JFace hoặc tương tự.

+0

Phần yêu cầu RCP là gì? 'PlatformUI.getWorkbench() ...'? – Mot

+0

hoàn hảo! có Tôi cần nó cho một ứng dụng RCP vì vậy điều này đã làm các trick độc đáo :) – Alb

+0

mklhmm: Có, các PlatformUI.getWorkbench() cuộc gọi yêu cầu gói org.eclipse.ui là một phần của RCP SDK. Tôi mừng vì điều này đã giúp ích cho bạn Alb. – tbone

Các vấn đề liên quan