华为mate9 pro 颜色10 pro哪个颜色好看

3.11.10 如何与浏览器交互
本文所属图书&>&
本书由资源的Eclipse专家亲自执笔,并得到了Eclipse官方技术社区的强烈推荐,权威性毋庸置疑!内容全面,系统讲解了利用Eclipse RCP和Spring OSGi开发大规模Java应用的核心技术;实战性强,包含大量易于操作的...&&
SWT控件提供了一组用于显示数据、接受用户输入数据的控件。Web应用程序通过HTML也同样提供了一组类似外观的控件。SWT可以使用Browser控件非常轻松地创建一个功能,并且显示HTML页面。但是SWT控件和HTML控件来自不同的技术体系,SWT使用进行,HTML则与Script技术结合使用。让SWT与HTML复合使用同样也是在实际开发中面临的应用场景。这里创建一个自定义的Browser控件,它提供能够访问HTML中Dom节点的Java接口,从而实现使用Java代码访问Html中Dom对象。
ScriptBrowser是一个支持访问HTML的Dom元素的自定义控件,它提供了非常方便的Java接口访问HTML中的元素,就好像使用普通的SWT控件一样。ScriptBrowser实现了StatusTextListener接口,这是实现SWT与HTML交互的关键,StatusTextListener监听器能够获取当前浏览器的状态信息,通过这些状态信息获取返回值。ScriptBrowser构造函数如代码清单3-92所示。
代码清单3-92 ScriptBrowser构造函数
public class ScriptBrowser extends Browser implements StatusTextListener{&
private final String DATA = &Browser_Data&;
public BeanBrowser(Composite parent, int style) {
&& super(parent, style);
&& addStatusTextListener(this);
要访问HTML的Input控件的取值与设值的Java接口,只需要拼接出一段的正确代码,并将此段代码交由Browser的execute方法,就能在Java中运行程序了。唯一需要注意的是,要从状态信息中获取返回结果。这里创建了一个工具方法getStatusText获取状态值,如代码清单3-93所示。
代码清单3-93 在SWT 中设置和获取HTML的 Input值
// 获取Html input控件的文本值
public String getText(String id) {
&StringBuffer javascript = new StringBuffer();
&javascript.append(
&var obj = document.getElementById('& + id + &');&);
&javascript.append(
&&if( obj != null && ( obj.type=='radio' || obj.type=='checkbox' ) ) {&);
&javascript.append(
&&if(obj.checked==true) window.status=obj. else window.status='';&);
&javascript.append(&}else{&);
&javascript.append(
&if(obj.value.length!=0) window.status=obj. else window.status='';&);
&&javascript.append(&}&);
&&if (execute(javascript.toString())) {
&&&String status = getStatusText();
&&&return getStatusText();
// 设置Html input控件的值
public void setText(String id, String value) {
&if(!StringUtils.isEmpty(value)){
&StringBuffer javascript = new StringBuffer();
&javascript.append(
&&var obj = document.getElementById('& + id + &');&);
&javascript.append(
&&if( obj != null && ( obj.type=='radio' || obj.type=='checkbox' ) ) {&);
&javascript.append(&&&& obj.checked=&);
&javascript.append(
&&}else if( obj != null && ( obj.tagName=='SELECT' ) ) {&);
&javascript.append(&&&& for (var i = 0; i & obj.options. i++) {&);&&
&javascript.append(&if (obj.options[i].value=='&+value+&') {&);
&javascript.append(&obj.options[i].selected=&);
&javascript.append(&&&&&&&&&&&&&);
&javascript.append(&&&&&&&& }&);&
&javascript.append(&&&&& }&);& &&&
&javascript.append(&}else{&);
&javascript.append(&&&& obj.value='& + value + &';&);
&javascript.append(&}&);
&if (execute(javascript.toString())) {}&&
&StringBuffer javascript = new StringBuffer();
&&javascript.append(
&&var obj = document.getElementById('& + id + &');&);
&javascript.append(
&if( obj != null && ( obj.type=='radio' || obj.type=='checkbox' ) ) {&);
&&javascript.append(&&&& obj.checked=&);
&&javascript.append(&}else{&);
&&javascript.append(&&&& obj.value='& + && + &';&);
&&javascript.append(&}&);
&&if (execute(javascript.toString())) {}
操作HTML的Checkbox控件,获取和设置boolean值,这里使用的Java方式和在HTML中使用的JavaScript编程方式非常相似。在SWT中设置和获取HTML的Checkbox值的程序实现如代码清单3-94所示。
代码清单3-94 在SWT 设置和获取HTML的Checkbox值
//设置Html input控件的boolean值
public void setBoolean(String id, boolean value) {
&StringBuffer javascript = new StringBuffer();
&javascript.append(&var obj = document.getElementById('& + id + &');&);
&javascript.append(&if( obj != null ) obj.checked=& + value + &;&);
&if (execute(javascript.toString())) {
//取Html input控件的boolean值
public boolean getBoolean(String id) {
&StringBuffer javascript = new StringBuffer();
&javascript.append(&var obj = document.getElementById('& + id + &');&);
&javascript.append(&if( obj != null ) window.status=obj.&);
&if (execute(javascript.toString())) {
&&if(getStatusText()==null){
&&&return Boolean.valueOf(getStatusText());
操作HTML的Select控件的方法更为丰富,由于篇幅所限,实现方式与上述基本一致,由于篇幅所限,读者可自行完成这些接口的设计。SWT中设置和获取Html Select值的程序实现如代码清单3-95所示。
代码清单3-95 SWT 设置和获取Html Select值
&// Set the boolean value of the input control
&public void addSelectOption(String id, String text, String value) {
&&// 省略&&
&// remove the select value of the input control
&public void removeSelectOption(String id, int idx) {
&&&&&&& // 省略&&
&// get select the value of the input control
&public void getSelectValue(String id) {
&&&&&&& // 省略&&
&// select the text of the input control
&public void getSelectText(String id) {
&&&&&&& // 省略&&
&// remove all select value of the input control
&public void removeAllSelect(String id, int idx) {
&&&&&&& // 省略&&
&&& // get select idx of the input control
&public int getSelectIndex(String id) {
&&&&&&& // 省略&&
&&& // index value of the input control
&public void indexSelect(String id, int index) {
&&&& // 省略&&
&// index value of the input control
&public void indexSelectValue(String id, String value) {
&&&&& // 省略&&
&// index text of the input control
&public void indexSelectText(String id, String text) {
&&&&& // 省略&&
将浏览器中的HTML内容以文本的形似返回,并将文本内容转化成Java中的Document类型,而不是HTML中的Document类型,这样可以方便地使用Java技术来处理HTML。这里使用的是org.jsoup.nodes.Document,如代码清单3-96所示,也可以选择自己熟悉的Java技术来解析HTML文本。
代码清单3-96 将HTML的 Document解析为Java对象
public Document getDocument() {
&& String html = this.getText();
&& Document document = Jsoup.parse(html);
执行JavaScript方法,实际是使用JavaScript的eval方法实现动态解析,如代码清单3-97所示。
代码清单3-97 在SWT中执行JavaScript方法
//执行一个JavaScript方法
public String eval(String method) {
&& if (execute(&eval(&+method+&)&)) {
&& return getStatusText();
对浏览器的操作将会引起状态信息的改变,实际上我们就是通过这个状态信息获取返回值,如代码清单3-98所示。
代码清单3-98 获取和更新状态信息
public String getStatusText() {
&& return (String)getData(DATA);
public void changed(StatusTextEvent event) {
&&&& setData(DATA, event.text);&
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'当前【全部】
全部安卓手机安卓平板安卓电视iPhoneiPad其他
当前位置:>>>Vanguard for Advisors
热门排行榜
276万+人在玩29万+人在玩46万+人在玩276万+人在玩186万+人在玩31万+人在玩
Vanguard for Advisors app相关推荐
发现该应用有下载安装使用错误或恶意扣费携带病毒,请
版权所有 京ICP备号-5
京公网安备 50 备

我要回帖

更多关于 华为mate9pro的颜色 的文章

 

随机推荐