我正在制作一组自定义摆动组件,它们实现了各种属性,如required标志或tabIndex. 我在尝试填充List各种自定义组件时遇到问题,然后根据tabIndex每个组件对列表进行排序。
我试图做到这一点的方法是让我的组件实现一个称为Indexed实现单个方法的接口getIndex()。然后使用我的IndexedComparator.
我的课程:
索引:
public interface Indexed {
      public int getIndex();
}
索引比较器:
public class IndexedComparator implements Comparator<Indexed> {
    @Override
    public int compare(Indexed o1, Indexed o2) {
        return o1.getIndex() - o2.getIndex();
    }
}
WWTextField:
public class WWTextField extends JTextField implements Indexed, FocusListener {
    private boolean required;
    private int tabIndex;
   ...
    @Override
    public int getIndex() {
        return tabIndex;
    }
}
新框架:
public class NewJFrame extends JFrame {
    List<? extends Component & Indexed> list = new ArrayList<>();
    IndexedFocusTraversalPolicy policy = new IndexedFocusTraversalPolicy();
    public NewJFrame() {
        initComponents();
        list.add(wWTextField1);
        list.add(wWTextField2);
        list.add(wWTextField3);
        list.add(wWTextField4);
        list.add(wWTextField5);
        list.add(wWFormatedTextField1);
        list.add(wWFormatedTextField2);
        Collections.sort(list);
        policy.populateComponents(list);
        this.setFocusTraversalPolicy(policy);
    }
}
编辑:我忘了发布一个实际问题。为什么我的执行不
List<? extends Component & Indexed> list = new ArrayList<>();
工作?当我尝试编译时,出现以下错误:
NewJFrame.java:22: error: > expected  
NewJFrame.java:22: error: ';' expected  
NewJFrame.java:22: error: illegal start of type