Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 微调器,添加上/下箭头按钮侦听器_Java_User Interface_Swt - Fatal编程技术网

Java 微调器,添加上/下箭头按钮侦听器

Java 微调器,添加上/下箭头按钮侦听器,java,user-interface,swt,Java,User Interface,Swt,是否可以为微调器上/下按钮添加单击侦听器? 我需要这种行为,因为当我添加修改或选择侦听器时,我手动输入到微调器字段的所有更改也会提交,这对我来说是不可接受的。您可以侦听SWT。验证并检查事件的键码 对于按钮按下,该值将为0。因此,当keyCode不等于0时,您可以告诉微调器忽略事件 public static void main(String[] args) { final Display display = new Display(); final Shell shell =

是否可以为微调器上/下按钮添加单击侦听器?
我需要这种行为,因为当我添加修改或选择侦听器时,我手动输入到微调器字段的所有更改也会提交,这对我来说是不可接受的。

您可以侦听
SWT。验证
并检查
事件的
键码

对于按钮按下,该值将为
0
。因此,当
keyCode
不等于
0
时,您可以告诉
微调器忽略事件

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    final Spinner spinner = new Spinner(shell, SWT.NONE);
    spinner.setMaximum(100);
    spinner.setMinimum(0);
    spinner.setIncrement(10);

    spinner.addListener(SWT.Verify, new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            if(arg0.keyCode != 0)
            {
                System.out.println("Value edited");
                arg0.doit = false;
            }
            else
            {
                System.out.println("Button pressed");
            }
        }
    });

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

谢谢你的回答。是否可以在VerifyListener和ModifyListener之间共享事件数据?我的意思是:可以通过向上/向下微调器按钮更改值,也可以通过按enter或focus lost手动更改文本字段中的值。@Steve您必须更具体一些。我当前的回答禁用了对“文本/值”的编辑,因为这正是您所要求的。如果您想启用两种编辑方式,但仍然能够在
侦听器中区分它们,只需删除
arg0.doit=false
。是的,您是对的。首先,我必须更具体一些。谢谢你的回答,非常有帮助!