【问题标题】:Appropriate Listener for SWT Text适合 SWT 文本的侦听器
【发布时间】:2013-10-21 07:41:44
【问题描述】:

我有一个 JFace 对话框,其中包含 SWT 文本和一个按钮。最初,当对话框打开时,按钮应该被禁用,当我点击Text 并且只要Text 的插入符号位置可见,按钮就应该被启用。

这些是我正在使用的听众:

text.addMouseListener(new MouseListener() 
    {
        @Override
        public void mouseDoubleClick(MouseEvent arg0) 
        {

        }

        @Override
        public void mouseDown(MouseEvent arg0) 
        {

        }

        @Override
        public void mouseUp(MouseEvent arg0) 
        {
            testButton.setEnabled(true);

        }   

    });

    text.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent arg0) 
        {
            testButton.setEnabled(false);
        }

        @Override
        public void focusGained(FocusEvent arg0) 
        {

        }
    });

我是否使用了合适的监听器?请推荐

【问题讨论】:

  • 所以你希望ButtonText 失去焦点时被禁用?如果是这样,您将永远无法按Button...
  • 是的...但是当我单击 Text 时,我正在启用按钮,然后当我离开 Text 时,我仍然启用了按钮并且我能够按下它...并且作为一旦按钮被点击,按钮就会被禁用
  • 好的,所以按钮被禁用了,然后你点击文本并且按钮被启用(即使没有输入文本),当你点击按钮时它会自动禁用?

标签: java swt listener


【解决方案1】:

如果我理解正确,这应该是你想要的:

    button.setEnabled(false);
    button.addListener(SWT.Selection, new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            button.setEnabled(false);
        }
    });

    text.addListener(SWT.FocusIn, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            button.setEnabled(true);
        }
    });

最初,Button 被禁用。一旦Text 获得焦点,它将被启用。 Button 按下后将再次被禁用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 2012-03-19
    • 2018-01-21
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2017-12-18
    相关资源
    最近更新 更多