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>

[9195 byte] By [deviancea] at [2007-11-26 18:40:14]
# 1
while i push on the JlistListener it getting in the listener twice...You're not checking the event details.When the selection changes, you may get two events, one for the deselection of the old item and one for the selection of the new item.
itchyscratchya at 2007-7-9 6:14:16 > top of Java-index,Desktop,Core GUI APIs...