Pokazanie JLabel w użyciu ListSelectionListener

0

JLabel które jest umieszczone w bloku ListSelectionListener, nie wyświetla się. Jak dodam to poza tym blokiem, to normalnie się pokazuje.

public void showHome() {
		
		listFavouriteMovies = new JList<String>(model);
		
		FILE.loadNumberOfMovies(login);
		
		if(Add.numberOfMovies > 0) {
			deserializationMovie();
			
			for(Movie movie : listMovie) {
				model.addElement(movie.getOriginalTitle());
			}
		}
		
		listFavouriteMovies.setBounds(0,80,150,688);
		dataBaseWindow.add(listFavouriteMovies);
		listFavouriteMovies.addListSelectionListener(new ListSelectionListener() {

			@Override
			public void valueChanged(ListSelectionEvent e) {

				movieID = model.indexOf(e);
					
				labelOriginalTitle = new JLabel("Original title:");
				labelOriginalTitle.setBounds(400,400,200,200);
				dataBaseWindow.add(labelOriginalTitle);
				
			}
			
		});
		
	}

Druga sprawa to taka, dlaczego gdy np. wyświetlam coś w konsoli z takiego bloku to wywołuje się to dwa razy.

0

Pierwszego pytania nie rozumiem.
Odpowiedź na drugie jest oczywista, gdy zmieniasz wybór (zaznaczenie), to zmiana następuje na dwóch elementach listy, jeden odznaczasz, drugi zaznaczasz. Dla każdego zdarzenia wywoływana jest metoda valueChanged. Wykorzystaj metodę getValueIsAdjusting() z klasy ListSelectionEvent.

0

OK, drugie kumam. A w pierwszym chodzi o to,że nie chce mi się pokazać JLabel, nie wiem dlaczego. PS. Wiem, że nazewnictwo dataBaseWindow mam tragiczne. Muszę nad tym popracować.

public class Home {
	
	DataBaseWindow dataBaseWindow;
	String login;
	
	public Home(DataBaseWindow dataBaseWindow, String login) {
		this.dataBaseWindow = dataBaseWindow;
		this.login = login;
	}
	
	JList<String> listFavouriteMovies;
	DefaultListModel<String> model = new DefaultListModel<String>();
	List<Movie> listMovie = new ArrayList<Movie>();
	int movieID;
	
	////////////////////
	JLabel labelOriginalTitle;
	////////////////////
	
	public void showHome() {
		
		listFavouriteMovies = new JList<String>(model);
		
		FILE.loadNumberOfMovies(login);
		
		if(Add.numberOfMovies > 0) {
			deserializationMovie();
			
			for(Movie movie : listMovie) {
				model.addElement(movie.getOriginalTitle());
			}
		}
		
		listFavouriteMovies.setBounds(0,80,150,688);
		dataBaseWindow.add(listFavouriteMovies);
		listFavouriteMovies.addListSelectionListener(new ListSelectionListener() {

			@Override
			public void valueChanged(ListSelectionEvent e) {

				movieID = model.indexOf(e);
					
				labelOriginalTitle = new JLabel("Original title:");
				labelOriginalTitle.setBounds(400,400,200,200);
				dataBaseWindow.add(labelOriginalTitle);
				
			}
			
		});
		
	}
	
	@SuppressWarnings("unchecked")
	public void deserializationMovie() {
		try {
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream("DATA/" + login + "/movies.txt"));
			listMovie = (List<Movie>)ois.readObject();
			ois.close();
		} catch (IOException | ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
1

Spróbuj tak:

dataBaseWindow.add(labelOriginalTitle);
dataBaseWindow.repaint();

1 użytkowników online, w tym zalogowanych: 0, gości: 1