我正在製作一組自定義擺動組件,這些組件可以實現各種屬性,如required
標誌或tabIndex
。試圖填充各個自定義組件的List
,然後根據每個組件的tabIndex
對列表進行排序時,我遇到問題。填充和排序List <?擴展T&S>
我如何做到這一點是讓我的組件實現一個名爲Indexed
的接口,它實現了一個方法getIndex()
。然後使用我的IndexedComparator
排序。
我的課:
索引:
public interface Indexed {
public int getIndex();
}
IndexedComparator:
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;
}
}
NewJFrame:
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
那麼問題是什麼? –
奧普斯,對不起,我想這會有所幫助。爲什麼我沒有實現List?擴展Component&Indexed> list = new ArrayList <>();'工作? – user1686524
@ user1686524你是什麼意思的「不工作」? –