2015-09-01 3 views
1

Я установил только реализацию браузера для просмотра веб-страницы. Я не могу понять, как захватить гиперссылки. Если я нажимаю на ссылку, ничего не происходит.Захват гиперссылки java SWT

Я попробовал Listener, LocationListener и применил к оболочке, дисплею, браузеруWindowGroup и браузеру, но не ответил на гиперссылку.

ОБНОВЛЕНИЕ: Это относится к http://inbox.google.com. Я могу щелкнуть гиперссылки в другом месте, только не изнутри тела сообщения в Google Inbox.

import org.eclipse.swt.SWT; 
    import org.eclipse.swt.browser.Browser; 
    import org.eclipse.swt.layout.GridData; 
    import org.eclipse.swt.layout.GridLayout; 
    import org.eclipse.swt.widgets.*; 

    public class BrowserTest { 

    public static void main(String[] args) { 
     Display display = new Display(); 
     final Shell shell = new Shell(display); 
     shell.setText("Browser Test"); 
     shell.setLayout(new GridLayout(1, false)); 

     Group browserWindowGroup = new Group(shell, SWT.NONE); 
     browserWindowGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
     browserWindowGroup.setLayout(new GridLayout(1, false)); 

     final Browser browser = new Browser(browserWindowGroup, SWT.NONE); 
     browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

     shell.setSize(1280, 800); 
     shell.open(); 
     browser.setUrl("http://inbox.google.com"); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     display.dispose(); 
    } 
} 

ответ

0

Благодарим за предоставленный пример! я нашел решение на https://deanoneclipse.wordpress.com/2011/04/27/intercepting-links/

Вы должны добавить LocationListener, как это

browser.addLocationListener(new LocationListener() { 
     public void changing(LocationEvent event) { 
      System.out.println(event);    
     } 

     public void changed(LocationEvent event) { 
     } 
    }); 

делает свой полный вид класса, как этот

import org.eclipse.swt.SWT; 
import org.eclipse.swt.browser.Browser; 
import org.eclipse.swt.browser.LocationEvent; 
import org.eclipse.swt.browser.LocationListener; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Group; 
import org.eclipse.swt.widgets.Shell; 

public class BrowserTest { 

    public static void main(String[] args) { 
     Display display = new Display(); 
     final Shell shell = new Shell(display); 
     shell.setText("Browser Test"); 
     shell.setLayout(new GridLayout(1, false)); 

     Group browserWindowGroup = new Group(shell, SWT.NONE); 
     browserWindowGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
     browserWindowGroup.setLayout(new GridLayout(1, false)); 

     final Browser browser = new Browser(browserWindowGroup, SWT.NONE); 
     browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
     browser.addLocationListener(new LocationListener() { 
      public void changing(LocationEvent event) { 
        System.out.println(event); 
      } 

      public void changed(LocationEvent event) { 
      } 
     }); 

     shell.setSize(1280, 800); 
     shell.open(); 
     browser.setUrl("http://www.google.com"); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     display.dispose(); 
    } 

} 
+0

Как я уже говорил, Слушатель и LocationListener до сих пор не используя http://inbox.google.com. Я могу получить ссылки на других страницах, которые я пробовал. –

Смежные вопросы