15/05/2016, 10:05
|
| | | 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());
* }
|