我有这个问题:
1)通过JTextField将对象放置在TreeMap中。 (类似电话簿的节目)。
2)有些按钮可以在TreeMap中实现可用记录的视图。 单击这些按钮时,在JTextField中显示的TreeMap的下一个/上一个可用对象。 (滚动查看可用记录)。
我尝试了这段代码,但它不起作用:/
btn[4].addActionListener(new ActionListener(){
Iterator iter = tree.keySet().iterator();
public void actionPerformed(ActionEvent e) {
if (iter.hasNext()){
String str = iter.next().toString();
fldFio.setText(str);
fldNumber.setText(tree.get(str));
}
}
});
我在方法actionPerformed中添加了这一行作为第一行:
System.out.println(iter1.hasNext());
结果是“假”,如果它无论如何都会有用。
答案 0 :(得分:1)
您的应用程序中似乎正在使用其他Iterator
iter1
。要浏览TreeMap
,您需要使用ActionListener
中定义的迭代器:
if (iter.hasNext()){
String str = iter.next().toString();
...
答案 1 :(得分:1)
您是否尝试在" actionPerformed()"内部移动迭代器?方法:
btn[4].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Iterator iter = tree.keySet().iterator();
if (iter.hasNext()){
String str = iter1.next().toString();
fldFio.setText(str);
fldNumber.setText(tree.get(str));
}
}
});
答案 2 :(得分:0)
我使用NavigableMap中的方法发布了这个东西。谢谢所有人的帮助:
btn[4].addActionListener(new ActionListener(){
String str;
public void actionPerformed(ActionEvent e) {
if (tree.size() != 0){
if ((str)==null){
str = tree.firstKey();
} else {
fldFio.setText(str);
fldNumber.setText(tree.get(str));
str = tree.higherKey(str);
}
}
}
});