Problem using ListSelectionListener...
while i push on the JlistListener it getting in the listener twice...
import java.awt.*;
import java.awt.event.ActionEvent;
import java.util.Set;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
publicclass ChoosingMovieFrameextends JFrame{
Vector<String> genre=new Vector<String>() ;
Vector<String> actor=new Vector<String>() ;
Vector<Integer> rating=new Vector<Integer>() ;
Vector<Integer> year=new Vector<Integer>() ;
ListSelectionModel listSelectionModel ;
JList genreList;
JList ratingList;
JList actorList;
JList yearList;
Criterion cTemp=new Criterion() ;
Criterion cConst=new Criterion() ;
MyData data;
public ChoosingMovieFrame(MyData data){
super("Choosing Movie");
this.data=data;
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setLayout(null);
/* for (int i=0;i<data.movies.size();i++)
{
if (!genre.contains(data.movies.get(i).getGenre()))
genre.add(data.movies.get(i).getGenre());
} */
genreList=new JList();
genreList.setName("Genre");
JScrollPane sGenre=new JScrollPane(genreList);
listSelectionModel = genreList.getSelectionModel();
listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
MyListSelectionListener jlistListener=new MyListSelectionListener();
genreList.addListSelectionListener(jlistListener);
sGenre.setSize(100,100);
sGenre.setLocation(0,0);
JPanel genrePanel=new JPanel();
genrePanel.setLayout(new GridLayout());
genrePanel.setLocation(10,10);
genrePanel.setSize(100,100);
genrePanel.add(sGenre);
add(genrePanel);
//////////////////////////////////////////////////////
/*for (int i=0;i<data.movies.size();i++)
if (!rating.contains(data.movies.get(i).getRating()))
rating.add(data.movies.get(i).getRating());
*/
ratingList =new JList();
ratingList.setName("Rating");
JScrollPane sRating=new JScrollPane(ratingList);
sRating.setSize(100,100);
sRating.setLocation(0,0);
JPanel ratingPanel=new JPanel();
ratingPanel.setLayout(new GridLayout());
ratingPanel.setLocation(120,10);
ratingPanel.setSize(100,100);
ratingPanel.add(sRating);
add(ratingPanel);
//////////////////////////////////////////////////////
/*for (int i=0;i<data.movies.size();i++)
if (!year.contains(data.movies.get(i).getYear()))
year.add(data.movies.get(i).getYear());
*/
yearList =new JList();
yearList.setName("Year");
JScrollPane sYear=new JScrollPane(yearList);
sYear.setSize(100,100);
sYear.setLocation(0,0);
JPanel yearPanel=new JPanel();
yearPanel.setLayout(new GridLayout());
yearPanel.setLocation(230,10);
yearPanel.setSize(100,100);
yearPanel.add(sYear);
add(yearPanel);
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
/*for (int i=0;i<data.movies.size();i++)
{
for (int j=0; j><data.movies.get(i).getActors().size(); j++)
{
if (!actor.contains(data.movies.get(i).getActors().get(j)))
actor.add(data.movies.get(i).getActors().get(j));
}
}*/
actorList =new JList();
actorList.setName("Actor");
actorList.addListSelectionListener(jlistListener);
JScrollPane sActor=new JScrollPane(actorList);
sActor.setSize(100,100);
sActor.setLocation(0,0);
JPanel actorPanel=new JPanel();
actorPanel.setLayout(new GridLayout());
actorPanel.setLocation(340,10);
actorPanel.setSize(100,100);
actorPanel.add(sActor);
add(actorPanel);
this. setSize(800,600);
this.setLocation(0,0);
this.setResizable(false);
this.setVisible(true);
data.criterionMovies = data.movies;
buildJLists();
}
publicvoid buildJLists(){
genre.removeAllElements();
for (int i=0;i<data.criterionMovies.size();i++)
if (!genre.contains(data.criterionMovies.get(i).getGenre()))
genre.add(data.criterionMovies.get(i).getGenre());
genreList.setListData(genre);
rating.removeAllElements();
for (int i=0;i<data.criterionMovies.size();i++)
if (!rating.contains(data.criterionMovies.get(i).getRating()))
rating.add(data.criterionMovies.get(i).getRating());
ratingList.setListData(rating);
year.removeAllElements();
for (int i=0;i<data.criterionMovies.size();i++)
if (!year.contains(data.criterionMovies.get(i).getYear()))
year.add(data.criterionMovies.get(i).getYear());
yearList.setListData(year);
actor.removeAllElements();
for (int i=0;i<data.criterionMovies.size();i++)
{
for (int j=0; j><data.criterionMovies.get(i).getActors().size(); j++)
{
if (!actor.contains(data.criterionMovies.get(i).getActors().get(j)))
actor.add(data.criterionMovies.get(i).getActors().get(j));
}
}
actorList.setListData(actor);
}
publicclass MyListSelectionListenerimplements ListSelectionListener{
publicvoid valueChanged(ListSelectionEvent e){
if (e.getValueIsAdjusting())
{
JList b=(JList)e.getSource();
if (b.getName().equals("Genre")){
cConst.setGenre((String)genreList.getSelectedValue());
data.Search(cConst, cTemp);
cTemp=cConst;
buildJLists();
}
if (b.getName().equals("Actor")){
cConst.setActor((String)actorList.getSelectedValue());
System.out.println("**"+cConst);
System.out.println("***"+cTemp);
data.Search(cConst, cTemp);
cTemp=cConst;
buildJLists();
}
}
}
}
}
Thanks>

