Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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_Focus - Fatal编程技术网

Java 自定义焦点遍历策略中出错

Java 自定义焦点遍历策略中出错,java,focus,Java,Focus,我正在创建java桌面应用程序。我想更改面板组件的选项卡顺序。我创建自己的焦点遍历策略。在面板中,我使用两个日期选择器字段。其他组件完全获得焦点,但datechooser字段没有获得焦点。我试着 List<Component> order=new LinkedList<>(); order.add(pidcmb); order.add(locationtxt); order.add(chemicalnametxt); order.add

我正在创建java桌面应用程序。我想更改面板组件的选项卡顺序。我创建自己的焦点遍历策略。在面板中,我使用两个日期选择器字段。其他组件完全获得焦点,但datechooser字段没有获得焦点。我试着

  List<Component> order=new LinkedList<>();
    order.add(pidcmb);
    order.add(locationtxt);
    order.add(chemicalnametxt);
    order.add(fromtxt);//datechooser
    order.add(totxt);//datechooser
    order.add(generate);
    order.add(cancel);
    newPolicy = new MyOwnFocusTraversalPolicy(order);
    parameter.setFocusTraversalPolicy(newPolicy);
     parameter.setFocusCycleRoot(true);
并创建一个类,如

class MyOwnFocusTraversalPolicy extends FocusTraversalPolicy
{

   List<Component> order;

        public MyOwnFocusTraversalPolicy(List<Component> order) {
            this.order = new LinkedList<Component>() {};
            this.order.addAll(order);
        }
    @Override
        public Component getComponentAfter(Container focusCycleRoot,
                                           Component aComponent)
        {
            int idx = (order.indexOf(aComponent) + 1) % order.size();
            return order.get(idx);
        }

    @Override
        public Component getComponentBefore(Container focusCycleRoot,
                                            Component aComponent)
        {
            int idx = order.indexOf(aComponent) - 1;
            if (idx < 0) {
                idx = order.size() - 1;
            }
            return order.get(idx);
        }

    @Override
        public Component getDefaultComponent(Container focusCycleRoot) {
            return order.get(0);
        }

    @Override
        public Component getLastComponent(Container focusCycleRoot) {
            return order.get(order.size());
        }

    @Override
        public Component getFirstComponent(Container focusCycleRoot) {
            return order.get(0);
        }

}