2017-02-22 99 views
0

在Java項目中,我使用SWT Eclipse作爲瀏覽器。通過Swt Eclipse瀏覽器收聽字段更改

我運行這個瀏覽器並加載頁面正常。

頁被裝載的樣子說:

<!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。如果你能避開它,不要走那條路。但是,您可能應該查看[this](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,並通過在按鈕的ID:

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(); 
}