首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swing:有没有办法区分用户引起的ItemEvent和应用程序引起的Swing?

Swing:有没有办法区分用户引起的ItemEvent和应用程序引起的Swing?
EN

Stack Overflow用户
提问于 2008-10-06 20:55:35
回答 1查看 1.7K关注 0票数 6

我正在使用基于Swing的应用程序中的组合框,我很难弄清楚如何区分由用户事件生成的ItemEvent和由应用程序引起的a。

例如,假设我有一个组合框'combo‘,我正在用我的ItemListener 'listener’监听itemStateChanged事件。当用户将选择更改为项目2,或者我执行行(伪代码)时:

combo.setSelection(2)

。。看起来我不能区分这些事件。

也就是说,我无论如何都不是Swing专家,所以我想我应该问一下。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-10-07 08:40:30

Action和Reaction法则非常明确:)。如果您尝试对更改做出反应,则不需要区分用户和应用程序。我可以想象只有一个用例需要“区分”。应用程序显示某些数据的情况。在这种情况下,您可能拥有应用程序的数据模型。此外,此模型中的侦听器和应用程序GUI将通过设置组件的值来做出反应。还有。如果用户选择了GUI组件中的任何内容。数据模型将通过改变值来做出反应。在这种情况下,很容易在数据模型上设置某种只读状态,它将通知模型忽略来自观察对象的任何事件。此通知集应在EDT中运行,并且标记没有问题。小示例:

class ApplicationDataModel {

    private Flag current = Flag.RW;

    public void setData(ApplicationData data) {
        current = Flag.RO;
        setDataImpl(data);
        notifyObservers();
        current = Flag.RW;
    }

    public void reaction(Event e) {
        if (flag = Flag.RO) return;
        ...
    }

}

注意标记,不要忘记线程化。如果你从另一个线程调用setData,那么你就有麻烦了。当然了。ApplicationData对象的提取必须在不同的线程中运行;)。一般来说,重新考虑应用程序的设计。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/176150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档