2017-02-22 22 views
0

В проекте Java я использовал SWT Eclipse в качестве браузера.Слушайте изменения поля с помощью браузера Swt Eclipse

Я запустил этот браузер и загрузил страницу в порядке.

Page, который загружается выглядит так:

<!DOCTYPE html> 
<html> 
<body> 

Start: <input type="text" id="startTimeField" onchange="myFunction()" placeholder="Type text and press Enter"> ms 

<script> 
    function myFunction() { 
     document.getElementById('startTimeField').value = new Date().getMilliseconds(); 
    } 
</script> 

</body> 
</html> 

Я хочу слушать элемент из страницы в Java коде.

Пример того, чего я хочу достичь: В Java нажмите JButton, который должен найти кнопку с идентификатором startTimeField со страницы и добавить к ним прослушиватель. Слушатель должен прослушать значение изменения этого поля. Как это сделать?

+1

Похоже, вы планируете смешивать SWT и Swing/AWT. Не уходите по этой дороге, если вы можете ее избежать. Тем не менее, вам, вероятно, следует взглянуть на [это] (http://blog.vogella.com/2009/12/21/javascript-swt/) для Java <-> Взаимодействие с Javascript, которое вы ищете. – Baz

+0

Я хочу добавить слушателя в Java-код для прослушивания изменений ввода текста на странице SWT. Сделайте то же самое, что и использование JxBrowser в этом вопросе (http://stackoverflow.com/questions/42391142/listen-changes-on-page-using-jxbrowser/42391828#42391828) – ACz

+1

Не уверен, что это возможно вообще без изменение HTML. – Baz

ответ

2

Вот очень простой пример с двумя кнопками HTML. При нажатии они будут называть SWT BrowserFunction и передать идентификатор кнопки:

public static void main(String[] args) 
{ 

    Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new FillLayout()); 

    Browser browser = new Browser(shell, SWT.NONE); 
    browser.setText("<button id='button1' onclick='buttonClicked(this.id)'>Click me</button><button id='button2' onclick='buttonClicked(this.id)'>Click me</button>"); 

    new BrowserFunction(browser, "buttonClicked") 
    { 
     @Override 
     public Object function(Object[] objects) 
     { 
      System.out.println("BUTTON CLICK; ID: " + objects[0]); 
      return null; 
     } 
    }; 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 
    display.dispose(); 
}