Bu yazımda JavaFx ile sunulan, WebView internet tarayıcısını nasıl kullanacağımıza değineceğim. Javanın swt ve awt paketleri içerisinde tam fonksiyonel, gömülü bir web tarayıcısı bulunmuyordu. Oracle bu sorunu JavaFx 2.0 ile çözmüş bulunmakta. Fakat WebView kullanımıyla ilgili Türkçe kaynak yetersiz olduğu için bu yazımda bu konuya değinmek istedim.
Öncelikle WebView kontrolünün özelliklerden biraz bahsedeyim.
- Yerel web sayfalarını veya internet sayfalarını render edebilir.
- Css, Javascript ve Html 5 desteği sunar.
- Web geçmişi tutabilir.
- Pop-up pencerelerini yönetmenize imkan sağlar.
Ayrıca yukarda saydıklarımdan başka birçok özellik, kullanıcı tarafından denetlenip kullanılabilmektedir. Bu özellikler bile, Swing paketindeki JEditorPane ile karşılaştırıldığında devrim niteliğinde. Bu kontrolün kullanımına geçmeden önce asıl işlemleri gerçekleştiren WebEngine sınıfına kısaca değinmek isterim. Temel web sayfası işlevselliği, bağlantılı sayfalar arasında gezinme, html formlarının gönderilmesi gibi işlemlerin hepsi bu sınıf aracılığıyla sağlanır. WebEngine sınıfı, yalnız tek bir sayfayı yönetebilir.
Şimdide Webview kontrolünü nasıl kullanabiliriz buna bir bakalım. Öncelikle formumuza bir Webview kontrolü yerleştirip uygun şekilde boyutlandırıyoruz.
En basit şekliyle, WebView içerisinde bir web sayfası açmak için, aşağıdaki iki satır yeterli.
1 2 |
WebEngine webEngine = tarayici.getEngine(); webEngine.load("http://www.kodlamamerkezi.com/"); |
Bazı durumlarda sayfanın tamamen yüklenmesi bittikten sonra bazı kodlar çalıştırmak isteriz. Sayfa tam yüklenmeden sayfa içerisindeki diğer kontrollere (textfield, dropdownlist v.b) erişmeye çalışırsanız hata alırsınız. Kodlarımıza aşağıdaki satırları ekliyoruz. “Yapılacak işlemler” diye yazdığım kısım sayfa tamamen yüklendikten sonra çalıştırılır.
1 2 3 4 5 6 7 8 9 10 |
webEngine.getLoadWorker().stateProperty().addListener( new ChangeListener<State>() { @Override public void changed(ObservableValue<? extends State> ov, State oldState, State newState) { if (newState == State.SUCCEEDED) { //Yapılacak işlemler } } }); |
Sayfada ki bir text kutusuna erişip içerisine veri girmek istersek, öncelikle sayfa içindeki kontrole erişip, daha sonra değeri aktarıyoruz.
1 2 |
HTMLInputElement txtTC=(HTMLInputElement)webEngine.getDocument().getElementById("txtTC"); txtTC.setValue(deger); |
Sayfadaki bir text kutusundan veri almak istersek;
1 2 |
HTMLInputElement txtBabaAdi=(HTMLInputElement)webEngine.getDocument().getElementById("txtBabaAdi"); String baba= txtBabaAdi.getValue(); |
Sayfada ki dropdownlist kontrolünden seçili veriyi almak istersek;
1 2 3 4 |
HTMLSelectElement ddlNufusIli=(HTMLSelectElement)webEngine.getDocument().getElementById("ddlNufusIli"); int ilno=ddlNufusIli.getSelectedIndex(); HTMLCollection iller=ddlNufusIli.getOptions(); String il=iller.item(ilno).getTextContent(); |
Ayrıca kodları incelerseniz kontroldeki tüm elemanlara ulaşabileceğinizi görürsünüz. Bir script kodu çalıştırmak yada script ile sayfaya yönlendirme yapmak için ise;
1 |
webEngine.executeScript("window.location.href='OOG00001.aspx'"); |
WebView içerisinde en çok ihtiyaç duyulan konulara değindim. Webview kullanımıyla ilgili sorularınızı bana iletin. Kolay gelsin…