Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/05/2016, 10:05
Avatar de NeoChiri
NeoChiri
 
Fecha de Ingreso: mayo-2016
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Llenar una ventana a partir de otra al abrirla



Aquí tengo la otra ventana, que se llama `VistaAlbumesBuscar`, y este es el código:

* *
Código:
public class VistaAlbumesBuscar extends JFrame implements ActionListener{
	
	/**
	 * Componentes de la ventana
	 */
	private Coordinador miCoordinador;
	private JTextField campoTextoArtista, campoTextoAlbum;
	private JLabel etiquetaArtista, etiquetaAlbum, etiquetaArtista2, etiquetaAlbum2, etiquetaCanciones;
	private JSeparator separador;
	private JButton botonModificar, botonEliminar, botonEliminar2, botonAdd;
	private JList listaCanciones;
	private DefaultListModel modeloLista;
	private JScrollPane scrollListadoCanciones;
	private JComboBox elegirAlbum, elegirArtista;
	private DefaultComboBoxModel modeloCombo;
	private Generador miGenerador;
	
	/**
	 * Iniciamos la ventana
	 */
	public VistaAlbumesBuscar() {
		iniciarVentana();
	}

	/**
	 * Contenido de la ventana.
	 */
	private void iniciarVentana() {
		
		/*Propiedades Frame*/
		setTitle("Albumes: Buscar");
		setBounds(100, 100, 353, 437);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		getContentPane().setLayout(null);
		setLocationRelativeTo(null);
		setResizable(false);
		
		/*Etiqueta Artista*/
		etiquetaArtista = new JLabel("Artista:");
		etiquetaArtista.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiquetaArtista.setBounds(10, 11, 46, 14);
		getContentPane().add(etiquetaArtista);
		
		/*Etiqueta de Album*/
		etiquetaAlbum = new JLabel("Album:");
		etiquetaAlbum.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiquetaAlbum.setBounds(10, 36, 46, 14);
		getContentPane().add(etiquetaAlbum);
		
		/*Separador*/
		separador = new JSeparator();
		separador.setBounds(0, 76, 337, 2);
		getContentPane().add(separador);
		
		/*Etiqueta Artista II*/
		etiquetaArtista2 = new JLabel("Artista:");
		etiquetaArtista2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiquetaArtista2.setBounds(10, 89, 46, 14);
		getContentPane().add(etiquetaArtista2);
		
		/*Campo texto Artista*/
		campoTextoArtista = new JTextField();
		campoTextoArtista.setBounds(62, 89, 231, 20);
		getContentPane().add(campoTextoArtista);
		campoTextoArtista.setColumns(10);
		campoTextoArtista.setEditable(false);
		
		/*Etiqueta Album II*/
		etiquetaAlbum2 = new JLabel("Album:");
		etiquetaAlbum2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiquetaAlbum2.setBounds(10, 121, 46, 14);
		getContentPane().add(etiquetaAlbum2);
		
		/*Campo texto Album*/
		campoTextoAlbum = new JTextField();
		campoTextoAlbum.setBounds(62, 120, 231, 20);
		getContentPane().add(campoTextoAlbum);
		campoTextoAlbum.setColumns(10);
		
		/*Boton Modificar*/
		botonModificar = new JButton("Modificar");
		botonModificar.setBounds(62, 151, 89, 23);
		botonModificar.addActionListener(this);
		getContentPane().add(botonModificar);
		
		/*Boton Eliminar*/
		botonEliminar = new JButton("Eliminar");
		botonEliminar.setBounds(161, 151, 89, 23);
		getContentPane().add(botonEliminar);
		
		/*Etiqueta Canciones*/
		etiquetaCanciones = new JLabel("Canciones:");
		etiquetaCanciones.setFont(new Font("Tahoma", Font.PLAIN, 14));
		etiquetaCanciones.setBounds(10, 206, 76, 14);
		getContentPane().add(etiquetaCanciones);
		
		/*Lista de Canciones*/
		scrollListadoCanciones=new JScrollPane();
		listaCanciones = new JList();
		modeloLista=new DefaultListModel();
		scrollListadoCanciones.setBounds(10, 226, 210, 163);
		getContentPane().add(scrollListadoCanciones);
		scrollListadoCanciones.setViewportView(listaCanciones);
		
		/*Boton Eliminar II*/
		botonEliminar2 = new JButton("Eliminar");
		botonEliminar2.setBounds(226, 366, 101, 23);
		getContentPane().add(botonEliminar2);
		
		/*Boton Añadir*/
		botonAdd = new JButton("A\u00F1adir");
		botonAdd.setBounds(226, 332, 101, 23);
		getContentPane().add(botonAdd);
		
		/*Combo Artista*/
		elegirArtista = new JComboBox();
		modeloCombo = new DefaultComboBoxModel();
		miGenerador=new Generador();
		elegirArtista.addActionListener(this);
		elegirArtista.setBounds(66, 10, 227, 20);
		getContentPane().add(elegirArtista);
		miGenerador.llenarComboArtistas(modeloCombo, elegirArtista);
		
		
		/*Combo Albumes*/
		elegirAlbum = new JComboBox();
		elegirAlbum.setBounds(66, 35, 227, 20);
		elegirAlbum.addActionListener(this);
		getContentPane().add(elegirAlbum);	
	}
	
	public void setCoordinador(Coordinador miCoordinador){
		this.miCoordinador=miCoordinador;
	}
	
	@Override
	public void actionPerformed(ActionEvent evento) {
		if(evento.getSource()==elegirArtista){
			if(elegirArtista.getSelectedIndex()>0){
				miGenerador.llenarComboAlbumes(modeloCombo, elegirAlbum, elegirArtista);
				campoTextoArtista.setText((String)elegirArtista.getSelectedItem());
				
			}
		}
		if(evento.getSource()==elegirAlbum||elegirAlbum.getSelectedIndex()>=0){
			
			AlbumVO albumVO=new AlbumVO();
			AlbumDAO albumDAO=new AlbumDAO();
			
			albumVO.setNombreAlbum(campoTextoAlbum.getText());
			campoTextoAlbum.setText((String)elegirAlbum.getSelectedItem());
			miGenerador.llenarListaCanciones(albumVO, modeloLista, listaCanciones, albumDAO);
		}
		if(evento.getSource()==botonModificar){
			try{
				AlbumVO albumVO=new AlbumVO();
				AlbumDAO albumDAO=new AlbumDAO();
				
				String nuevoNombreAlbum=campoTextoAlbum.getText();
				albumVO.setNombreAlbum(elegirAlbum.getSelectedItem().toString());
				albumDAO.modificarAlbum(albumVO, nuevoNombreAlbum);
			}catch(Exception excepcion){
				excepcion.printStackTrace();
			}
		}
	}
	
	public void abrirVentana(JTextField campoTextoArtista2, DefaultListModel modeloLista, JList listadoAlbumes){
		
		miGenerador.llenarComboArtistas(modeloCombo, elegirArtista);
		miGenerador.llenarComboAlbumes(modeloCombo, elegirAlbum, elegirArtista);
		elegirArtista.setSelectedItem(campoTextoArtista2.getText());
		elegirAlbum.setSelectedItem(listadoAlbumes.getSelectedValue());
	}
	
 * *}
Pues mi problema se plantea es que en la ventana 'VistaArtistasBuscar' yo desde ahí busco un `Artista`, y este se me muestra con todos sus `Album`es,
pues yo quiero que al tener seleccionado un `Album` y pincha en el botón seleccionar, se me abra la ventana 'VistaAlbumesBuscar' mostrando los datos
del `Artista`, ya son el nombre de este, el nombre del `Album` y el listado de `Cancion`es asociadas a este `Album`, a la vez que los `JComboBox` de `Artista` y `Album` contengan el resto de nombre, pero que al abrir la ventana estén señalados esos nombres, tal y como muestro en esta imagen, y podéis ver como son las dos ventanas:



Aquí dejo los metodos que he usado para llenar los `JComboBox` y el `JList` de la ventana `VistaAlbumesBuscar`:

* *
Código:
public void llenarComboArtistas(DefaultComboBoxModel modeloCombo, JComboBox elegirArtista) {
		
		Conexion conexion=new Conexion();
		
 * * * *try {
 * * * *	modeloCombo = new DefaultComboBoxModel();
 * * * *	Statement sqlNombreArtista=conexion.getConexion().createStatement();
	 * * * *ResultSet resultado=sqlNombreArtista.executeQuery("SELECT name from artist");
 * * * * * *modeloCombo.addElement("Seleccione un campo");
 * * * * * *elegirArtista.setModel(modeloCombo);
 * * * * * *while (resultado.next()) {
 * * * * * * * *modeloCombo.addElement(resultado.getString("name"));
 * * * * * * * *elegirArtista.setModel(modeloCombo);
 * * * * * *}
 
 * * * * * *sqlNombreArtista.close();
 * * * * * *conexion.cerrarConexion();
 * * * *} catch (SQLException excepcion) {
 * * * * * *excepcion.printStackTrace();
 * * * *}
 * * *}
*
Código:
 *public void llenarComboAlbumes(DefaultComboBoxModel modeloCombo, JComboBox elegirAlbum, JComboBox elegirArtista) {
		
		Conexion conexion=new Conexion();
		
 * * * *try {
 * * * *	
 * * * *	ArtistaDAO artistaDAO=new ArtistaDAO();
 * * * *	ArtistaVO artistaVO=new ArtistaVO();
 * * * *	
 * * * *	elegirAlbum.removeAllItems();
 * * * *	artistaVO.setNombreArtista((String)elegirArtista.getSelectedItem());
 * * * *	String sqlConsulta="SELECT title from album where artistid=?";
 * * * *	PreparedStatement sqlNombreAlbum=conexion.getConexion().prepareStatement(sqlConsulta);
 * * * *	sqlNombreAlbum.setInt(1, artistaDAO.getIdArtista(artistaVO));
	 * * * *ResultSet resultado=sqlNombreAlbum.executeQuery();
 * * * * * *elegirAlbum.setModel(modeloCombo);
 * * * * * *while (resultado.next()) {
 * * * * * * * *modeloCombo.addElement(resultado.getString("title"));
 * * * * * * * *elegirAlbum.setModel(modeloCombo);
 * * * * * *}
 * * * * * *sqlNombreAlbum.close();
 * * * * * *
 * * * *} catch (SQLException excepcion) {
 * * * * * *excepcion.printStackTrace();
 * * * *}finally{
 * * * *	conexion.cerrarConexion();
 * * * *}
 * * *}
Y como podéis ver dentro de la ventana `VistaAlbumesBuscar` he creado un método llamado `abrirVentana` al cual llamo desde `VistaArtistasBuscar` el cual podéis ver aquí:

* *
Código:
 *public void abrirVentana(JTextField campoTextoArtista2, DefaultListModel modeloLista, JList listadoAlbumes){
		
		miGenerador.llenarComboArtistas(modeloCombo, elegirArtista);
		miGenerador.llenarComboAlbumes(modeloCombo, elegirAlbum, elegirArtista);
		elegirArtista.setSelectedItem(campoTextoArtista2.getText());
		elegirAlbum.setSelectedItem(listadoAlbumes.getSelectedValue());
	 * }