JButton和treemap的下一个/上一个对象

时间:2012-10-28 13:49:57

标签: java swing jbutton actionlistener treemap

我有这个问题:

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

结果是“假”,如果它无论如何都会有用。

3 个答案:

答案 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);   
                   }
          }
       }
   });