`
ljl_xyf
  • 浏览: 636569 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

swt Browser 如何打开新url链接地址

    博客分类:
  • java
阅读更多

上一篇文章【java swing 内置浏览器打开网页显示flash图表-swt Browser应用 】讲解的如何在java中打开网站,但是,在实际开发中右遇到了一个问题就是如何用程序改变已经打开的网页地址,下面把自己解决问题的方法讲解一下。

首先我在程序中直接调用 Browser对象的setUrl方法,代码如下:

 browser.setUrl("http://www.y400800.cn ");

程序会抛出如下异常:

Exception occurred during event dispatching:
org.eclipse.swt.SWTException: Invalid thread access
        at org.eclipse.swt.SWT.error(SWT.java:3884)
        at org.eclipse.swt.SWT.error(SWT.java:3799)
        at org.eclipse.swt.SWT.error(SWT.java:3770)
        at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
        at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355)
        at org.eclipse.swt.browser.Browser.checkWidget(Browser.java:164)
        at org.eclipse.swt.browser.Browser.setUrl(Browser.java:973)
        at zhinengkaiguanjiankong.comm.SWTPane.StartThread(SWTPane.java:42)
        at zhinengkaiguanjiankong.RealTimeSwitchDetailChart.jbtn_searchActionPerformed(RealTimeSwitchDetailChart.java:292)
        at zhinengkaiguanjiankong.RealTimeSwitchDetailChart.access$200(RealTimeSwitchDetailChart.java:32)
        at zhinengkaiguanjiankong.RealTimeSwitchDetailChart$2.actionPerformed(RealTimeSwitchDetailChart.java:186)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
        at java.awt.Dialog$1.run(Dialog.java:1046)
        at java.awt.Dialog$3.run(Dialog.java:1098)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1096)
        at java.awt.Component.show(Component.java:1563)
        at java.awt.Component.setVisible(Component.java:1515)
        at java.awt.Window.setVisible(Window.java:842)
        at java.awt.Dialog.setVisible(Dialog.java:986)
        at zhinengkaiguanjiankong.RealTimeSwitchDetailChart$4.run(RealTimeSwitchDetailChart.java:315)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

该解决方案被否定,以失败告终。

 

然后又在网上baidu,google了一下,发现问题如下:

在非SWT线程的线程里想要修改SWT界面,都要通过上面类似的办法来做,不然就会报错的,解决方法如下:

 

 Display.getDefault().syncExec(new Runnable() {

            public void run() {
                browser.setUrl("http://www.my400800.cn ");
            }
        });

最主要是红色字体的地方代码,大家注意一下。

 

 

 

 

 

分享到:
评论

相关推荐

    SWT Browser(内嵌浏览器)所需SWTResourceManager Jar包

    SWT Browser(内嵌浏览器)所需SWTResourceManager Jar包

    SWT Browser浏览器小程序

    用SWT 组建实现一个简单的浏览器实例。具有搜索功能,

    在SWING、SWT中嵌入浏览器

    6. 监听和交互:SWT的`Browser`类提供了事件监听器,如`LocationChangedListener`和`ProgressListener`,以便于监控加载进度和改变页面地址。此外,还可以通过JavaScript接口与页面进行双向通信。 7. 错误处理:...

    SWT或Applet打开Office文件

    本文将详细探讨如何利用SWT和Applet来打开和操作本地的Office文件,包括Word、Excel和PowerPoint等。 首先,SWT是Eclipse基金会开发的一种Java GUI库,它提供了一种更接近于本机应用程序的用户体验,因为它的控件...

    SWT(JFace)小制作 FileBrowser文件浏览

    代码如下: 代码如下:package swt_jface.demo6; import java.io.File; import java.util.Date; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics....

    SWT开发的浏览器(Java)--源代码

    例如,当用户在地址栏输入并按下回车键时,可以添加一个`KeyListener`监听键盘事件,然后根据输入的URL启动加载新页面的过程。同时,为了确保安全,开发者还需要考虑对URL的验证和异常处理。 最后,项目提供的`swt....

    swt 开发实例

    4. **配置SWT Browser**:在Eclipse中创建一个新的SWT项目,导入Browser组件,并设置其加载本地的FTL文件。 5. **Freemarker与Java的结合**:使用Freemarker API,将数据模型传递给模板并生成HTML字符串。 6. **...

    SWT Browser jar文件下载(可导入Eclipse)

    导入Eclipse方法: 1.解压zip,找出2个jar文件,放入一个你想放的文件夹中 2.右键Eclipse中的工程,选择Build Path->Configure Build Path 3.选择Add External Jar,选择解压得到的2个jar即可

    org.eclipse.swt相关所有jar包,

    "Browser"标签则明确指出了SWT的核心功能之一——浏览器功能,这是通过`org.eclipse.swt.browser.Browser`类提供的。这个类提供了加载URL、执行JavaScript、与网页内容交互等方法,使得开发者可以在Java应用程序中...

    SWT java浏览器

    - **打开**:用户可以打开新的URL,通过`setUrl`方法将指定的URL加载到浏览器中。 - **前进/后退**:使用`goForward`和`goBack`方法,开发者可以实现浏览器的历史导航功能。 - **查看历史**:SWT的`Browser`类并不...

    SWT Designer 最新版本

    SWT Designer 最新版本第3部分

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    64位版本的SWT是为了在64位Java运行时环境中运行而编译的,这意味着它可以充分利用64位系统的优势,如更大的内存地址空间和更快的计算能力。SWT库通常以jar文件的形式分发,就像压缩包中的“swt-64.jar”一样。...

    org.eclipse.swt.win32

    org.eclipse.swt.browser.Browser.class org.eclipse.swt.browser.BrowserFactory.class org.eclipse.swt.browser.BrowserFunction.class org.eclipse.swt.browser.CloseWindowListener.class org.eclipse.swt....

    eclipse cef browser 样例程序

    git 地址 https://github.com/maketechnology/chromium.swt

    swt入门范例新手适用,入门级

    4. **对话框(Dialogs)**:SWT提供了一些内置的对话框,如`MessageDialog`用于显示消息,`FileDialog`用于打开或保存文件,`ColorDialog`和`FontDialog`则用于选择颜色和字体。这些对话框可以帮助增强应用程序的...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    ### SWT配置详解 #### 一、SWT简介与配置的重要性 SWT(Standard Widget Toolkit)是一种用于构建基于Java的应用程序的图形用户界面工具包。它提供了丰富的控件集,并能够生成本地外观和感觉的界面,这使得应用在...

    使Excel嵌入到SWT窗口中

    使Excel嵌入到SWT窗口中 知识点一:Eclipse版本和jdk版本的选择 在本例中,我们使用的是Eclipse 3.3.1版本和jdk 5.0版本。Eclipse是一个开源的集成开发环境(IDE),它支持多种编程语言,包括Java、C++、Python等...

    SWT界面设计PDF

    SWT(Standard Widget Toolkit)是Java中用于创建图形用户界面(GUI)的一种开源库,它提供了丰富的组件集合,使得开发者可以构建出功能强大且美观的桌面应用程序。与Java的另一图形库AWT和Swing相比,SWT更接近底层...

    SWT源码 swt.jar

    SWT(Standard Widget Toolkit)是Eclipse项目的一个重要组成部分,它提供了一套用于构建图形用户界面(GUI)的API,与Java Swing不同,SWT基于操作系统原生的UI组件,因此能够实现更好的性能和与操作系统的集成。...

Global site tag (gtag.js) - Google Analytics