我用J2SE做了一个播放器,用了JMF包里的播放器,现在我有一个MAP,里面KEY是时间毫秒LONG表示,V是歌词,请问怎么做才能让播放器的时间与KEY里的时间对上的时候歌词取出来。最关键的问题是怎么一直在KEY里检索,目前这段代码如下,但是不能通过因为 SET不能转换为LIST 或者大家有没有什么更好的方法可以解决这个问题的,谢谢~
JLabel jl2=new JLabel();
Set<Long> set = gecimapMap.keySet();
ListIterator<Long> ite=(ListIterator)set.iterator();//提示不能转换
while (ite.hasNext()) {
long lo = ite.next();
double locmp=player.getMediaTime().getSeconds();
long loc=(long) (locmp)*1000;
System.out.println(lo);
System.out.println(loc);
if ((double)lo==loc) {
System.out.println(gecimapMap.get(lo));
String gcs=(java.lang.String) gecimapMap.get(lo);
jl2.setText(gcs);
jp1.add(jl2);
jl2.setBounds(100,100,100,100);
jl2.setVisible(true);}
if(!ite.hasNext()){
while (ite.hasPrevious()) {
lo = ite.previous();
locmp=player.getMediaTime().getSeconds();
loc=(long) (locmp)*1000;
System.out.println(lo);
System.out.println(loc);
if ((double)lo==loc) {
System.out.println(gecimapMap.get(lo));
String gcs=(java.lang.String) gecimapMap.get(lo);
jl2.setText(gcs);
jp1.add(jl2);
jl2.setBounds(100,100,100,100);
jl2.setVisible(true);}
}
}
listjavaj2semap容器
JLabel jl2=new JLabel();
Set<Long> set = gecimapMap.keySet();
ListIterator<Long> ite=(ListIterator)set.iterator();//提示不能转换
while (ite.hasNext()) {
long lo = ite.next();
double locmp=player.getMediaTime().getSeconds();
long loc=(long) (locmp)*1000;
System.out.println(lo);
System.out.println(loc);
if ((double)lo==loc) {
System.out.println(gecimapMap.get(lo));
String gcs=(java.lang.String) gecimapMap.get(lo);
jl2.setText(gcs);
jp1.add(jl2);
jl2.setBounds(100,100,100,100);
jl2.setVisible(true);}
if(!ite.hasNext()){
while (ite.hasPrevious()) {
lo = ite.previous();
locmp=player.getMediaTime().getSeconds();
loc=(long) (locmp)*1000;
System.out.println(lo);
System.out.println(loc);
if ((double)lo==loc) {
System.out.println(gecimapMap.get(lo));
String gcs=(java.lang.String) gecimapMap.get(lo);
jl2.setText(gcs);
jp1.add(jl2);
jl2.setBounds(100,100,100,100);
jl2.setVisible(true);}
}
}
listjavaj2semap容器
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货