1

我有这个问题:

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

结果是“假的”,如果它无论如何都会有帮助的话。

4

3 回答 3

1

看来您Iterator iter1在应用程序中使用了另一个。要浏览您的TreeMap内容,您需要使用您定义的迭代器ActionListener

 if (iter.hasNext()){
    String str = iter.next().toString();
    ...
于 2012-10-28T14:05:34.567 回答
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));
     }
  }
}); 
于 2012-10-28T14:08:17.803 回答
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);   
                   }
          }
       }
   }); 
于 2012-10-29T10:02:25.593 回答