`
cobble19
  • 浏览: 107083 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

netbeans 多线程 IllegalStateException

    博客分类:
  • Java
阅读更多
WARNING [org.netbeans.core.windows.WindowManagerImpl]
java.lang.IllegalStateException: Problem in some module which uses Window System: Window System API is required to be called from AWT thread only, see http://core.netbeans.org/proposals/threading/


简单说明:
此问题出现的原因大概是:Window System API 只能被AWT 线程(主线程)调用。也可以简单理解为,在别的线程里面不能对netbeans的控件进行操作,比如给控件赋值等。

1.其他线程怎么操作【netbeans的控件】?
2.用设计模式中的一种【观察者模式】。线程只负责传值。观察者负责处理问题。
3.例子代码。(代码不能直接使用)

4.ObserverBridgeRunnable.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
imports..

/**
 * 自定义线程
 * @author gby
 */
public class ObserverBridgeRunnable implements Runnable {

    private DataObservable dataObservable;
    
    public ObserverBridgeRunnable(DataObservable DataObservable) {
        this.DataObservable = DataObservable;
    }

    @Override
    public void run() {
        HandledData handledData = new HandledData();
        DataObservable.handleTcpData(handledData);
    }

}


5.DataObservable.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

imports..

/**
 * 被观察者
 * Tcp通讯被监视者
 * @author gby
 */
public class DataObservable  extends Observable {
    private static DataObservable instance = null;
    private DataObservable() {
    }
    
    public static synchronized DataObservable getInstance() {
        if (instance == null) {
            instance = new DataObservable();
        }
        return instance;
    }
    
    public static DataObservable newInstance() {
        return new DataObservable();
    }
    
    public void handleTcpData(Object data) {
        super.setChanged();
        notifyObservers(data);
    }
}


6.DataObserver.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
imports..

/**
 * 观察者
 * @author gby
 */
public class DataObserver implements Observer {

    @Override
    public void update(Observable o, final Object arg) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                HandledData handledData = (HandledData) arg;
                // 处理数据
                Manage.hanled(handledData);
            }
        });
    }
}


【4,5,6】为处理所需的类,【7】为调用方法。
7.调用方法
// 建立观察者模式
DataObservable DataObservable = DataObservable.newInstance();
DataObservable.addObserver(new DataObserver());
// 处理数据
ObserverBridgeRunnable observerBridgeRunnable = new ObserverBridgeRunnable(inputStreamReader, DataObservable);
Thread thread = new Thread(observerBridgeRunnable);
thread.start();

引用
Cobble.Ge 于 合肥 公司 20120525
分享到:
评论

相关推荐

    java socket多线程聊天

    Java Socket多线程聊天软件是基于Java编程语言构建的一个网络通信应用,主要利用Socket API来实现客户端与服务器之间的实时通信。在这个系统中,服务器端能够同时处理多个客户端连接,这得益于Java的多线程特性。SWT...

    Java实现多线程下载源代码

    本项目"Java实现多线程下载源代码"正是这样一个示例,它使用了NetBeans IDE创建用户界面,使得用户能够更加直观地管理和监控下载过程。 首先,我们来深入理解Java中的多线程。在Java中,线程是程序执行的最小单位,...

    java 多线程简易聊天 精简版

    Java多线程技术是编程领域中的重要概念,尤其在开发高效、并发的网络应用程序时,如简易聊天程序,它的应用尤为关键。在这个“java 多线程简易聊天 精简版”项目中,我们将深入探讨Java如何实现多线程环境下的客户端...

    Ubuntu配置Netbeans8.2

    Ubuntu 配置 Netbeans 8.2 Ubuntu 是一个流行的 Linux 发行版,而 Netbeans 是一个功能强大的集成开发环境(IDE)。在本文中,我们将指导您如何在 Ubuntu 20.04 上配置 Netbeans 8.2。 标题解释 Ubuntu 配置 ...

    netbeans字体配置文件.netbeans字体配置文件

    netbeans字体配置文件.netbeans字体配置文件netbeans字体配置文件.netbeans字体配置文件netbeans字体配置文件.netbeans字体配置文件netbeans字体配置文件.netbeans字体配置文件netbeans字体配置文件.netbeans字体...

    NetBeans IDE 6.0 用户界面设计

    NetBeans IDE 6.0 用户界面设计 NetBeans IDE 6.0 用户界面设计是 Java 开发人员的热门话题。自 NetBeans 5.0 以来,人们最常谈及的且具有创新性的特性是 Project Matisse 或 Form Editor。许多人都认为,在不同 ...

    NetBeans 教程(如何使用NetBeans)

    NetBeans是一款功能强大的开源集成开发环境(IDE),尤其适合Java编程。这个教程将带你深入了解如何有效地使用NetBeans来编译和运行Java程序。NetBeans以其直观的用户界面、丰富的特性集以及对Java SE、Java EE和...

    NetBeans安装包.rar

    NetBeans是一款广泛使用的开源集成开发环境(IDE),尤其在Java编程领域中深受开发者喜爱。它提供了丰富的功能,包括代码编辑、调试、构建和部署等,为开发者提供了高效的工作环境。这个"NetBeans安装包.rar"文件是...

    桌面精灵应用多线程滚动字幕万年历定时提醒等技术

    在IT领域,开发一款“桌面精灵应用”涉及多种关键技术,如多线程、滚动字幕、万年历计算以及定时提醒。以下将详细介绍这些技术及其在项目中的应用。 首先,多线程技术是现代计算机程序设计中的核心概念,特别是在...

    Apache-NetBeans 21

    Apache-NetBeans 21安装包

    netbeans安装包

    NetBeans是一款广受欢迎的开源集成开发环境(IDE),专为编程者提供了一个高效、便捷的平台,用于构建...同时,其开源和免费的特性,以及对多语言和新技术的持续支持,使得NetBeans在开发者社区中保持着极高的评价。

    NetBeans权威指南 源码

    NetBeans是当前市场上最为流行的、源代码开放且免费的集成开发环境。NetBeans不仅可以作为Java开发工具,还可以使用它开发标准的Java程序、Web应用程序、Java EE企业级应用程序、Java ME手机应用程序等,还能够开发...

    NetBeansNetBeans

    NetBeans是Sun公司(2009年被甲骨文收购)在2000年创立的开放源代码供开发人员和客户社区的家园,旨在构建世界级的Java IDE。NetBeans当前可以在Solaris、Windows、Linux和Macintosh OS X平台上进行开发,并在SPL...

    netbeans的Sublime样式

    NetBeans是一款广泛使用的开源集成开发环境(IDE),尤其在Java开发者中颇受欢迎。它提供了丰富的功能,包括代码编辑、调试、构建以及项目管理等。在追求个性化和提高工作效率的现代编程环境中,编辑器的外观和感觉...

    java netbeans计算器(完结版)

    请下载java netbeans 科学计算器(最终版)可BAIDU,可csdn 搜 请下载java netbeans 科学计算器(最终版)可BAIDU,可csdn 搜 请下载java netbeans 科学计算器(最终版)可BAIDU,可csdn 搜 请下载java netbeans ...

    Java实现多线程下载JAR包

    用NetBeans编的一个Java多线程下载程序,这只是一个JAR包,大家可以感受下哈!

    netbeans-8.0-linux

    NetBeans IDE 8.0 for Linux 是一个专为开发人员设计的强大集成开发环境(IDE),尤其适用于编写Java应用程序。此版本特别针对Linux操作系统进行了优化,提供了丰富的功能集,旨在提高在Linux平台上的开发效率。 ...

    NetBeans中添加背景图片附源码

    在NetBeans中添加背景图片是一项常见的个性化设置任务,可以让你的开发环境更加独特且符合个人审美。NetBeans是一个流行的开源集成开发环境(IDE),支持多种编程语言,如Java、C++、PHP等。通过自定义背景图片,...

    NetBeans Java快速入门

    3. 项目结构:在 NetBeans IDE 中,一个项目由多个组件组成,包括项目窗口、源码编辑器窗口和导航器窗口等。 4. Java 代码编写:在 NetBeans IDE 中,可以编写 Java 代码,包括添加代码、编译和运行等步骤。 5. ...

Global site tag (gtag.js) - Google Analytics