gpt4 book ai didi

java - 填充和排序列表

转载 作者:行者123 更新时间:2023-12-01 05:06:57 26 4
gpt4 key购买 nike

我正在制作一组自定义 swing 组件,它们实现各种属性,例如 required 标志或 tabIndex。我在尝试填充各种自定义组件的 List,然后根据每个组件的 tabIndex 对列表进行排序时遇到问题。

我试图做到这一点的方法是让我的组件实现一个名为 Indexed 的接口(interface),该接口(interface)实现单个方法 getIndex()。然后使用我的 IndexedComparator 进行排序。

我的类(class):

索引:

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();
}

}

WW 文本字段:

public class WWTextField extends JTextField implements Indexed, FocusListener {
private boolean required;
private int tabIndex;

...

@Override
public int getIndex() {
return tabIndex;
}
}

新JFrame:

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

最佳答案

Comparator 实例不是“自动”的,您必须指定它们。我认为你的意思是:

Collections.sort(list, new IndexedComparator());

关于java - 填充和排序列表 <?扩展条款与条件>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12524661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com