Problema al crear un filtro

Iniciado por robertofd1995, 4 Junio 2015, 15:40 PM

0 Miembros y 1 Visitante están viendo este tema.

robertofd1995

Hola a todos , tengo una aplicacion en la que muestro por pantalla unos botones que contienen el nombre de una pelicula.
El problema lo tengo creando un filtro , he creado aparte un JComboBox que contiene los filtros posibles.

el metodo de filtro funciona , el problema lo tengo al cargar visualmente de nuevo las cosas.

Al seleccionar un filtro , la pantalla deberia recargar las peliculas que cumplan x condicion.

Estoy intentando refrescar la pantalla con repaint pero no funciona.

CODE:

Código (java) [Seleccionar]



private JComboBox getCbFiltro() {
if (cbFiltro == null) {
cbFiltro = new JComboBox();
cbFiltro.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
pnBillboard.removeAll();
pnBillboard.repaint();

}
@Override
public void focusLost(FocusEvent e) {

addFilmsToBillboard();
pnBillboard.repaint();
}
});


/*
  addFilmsToBillboard();
  contentPane.repaint();
*/
cbFiltro.addItem("");
cbFiltro.addItem("Todos los públicos");
cbFiltro.addItem("3D");

}
return cbFiltro;
}


private void addFilmsToBillboard() {
JButton aux;
pnBillboard.setLayout(resizeGridLayout(billboard.getNumberOfFilms()));
for (final Film each : billboard.getFilms()) {
if(filtrar(each)){ //si cumple la condicion se añade

aux = new JButton("<html>" + each.getTitle() + "<br>"
+ each.getGender() + " " + each.getRecomendedAge() + "  "
+ each.is3DString() + "</html>");
aux.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
((CardLayout) pnMain.getLayout()).show(pnMain,
"panelDescription");
tASumary.setText(each.getSynopsis());
lbTituloPelicula.setText(each.getTitle());
lbGeneropelicula.setText(each.getGender());
lblEdadr.setText(each.getRecomendedAge());
lblDuracionfilm.setText(Integer.toString(each.getLenght())
+ " m");
checkB3D.setSelected(each.isIs3D());
lblFroom.setText(each.getRoom());

cBDates.setModel(new DefaultComboBoxModel(each
.getPremiereDates()));
cBHours.setModel(new DefaultComboBoxModel(each.getDates()));

cbFiltro.setVisible(false); //esconder casilla filtro

cargarImagenPelicula(each);

showStep(false, true, false, false);

}
});
pnBillboard.add(aux);
}
}//if

}

private boolean filtrar(Film film){
String filter=(String)cbFiltro.getSelectedItem();
switch (filter) {
case "3D":
return film.isIs3D();
case "Todos los publicos":
return film.getRecomendedAge().equals("Todos los públicos");

default:
return true;
}
}



Un saludo y espero su ayuda.

PD: creo recordar que una vez utilize algo que se llamaba UIManager pero me he puesto a mirar y no recuerdo como podria haberlo utilizado

robertofd1995

Lo acabo de medio solucionar , he añadido una llamada al el metodo updateUI y ahora funciona cada vez que pierde el foco.
¿pero que diferencia hay entre updateUI y repaint?