Открывать окно начиная с другой

У меня есть два окна, которые вы сможете видеть в изображении ниже.

Код VistaArtistasBuscar:

 public class VistaArtistasBuscar extends JFrame implements ActionListener{

/**
 * Componentes de la ventana 
 */ 
private Coordinador miCoordinador;
private JTextField campoTextoArtista, campoTextoArtista2;
private JLabel etiquetaNombreArtista, etiquetaNombreArtista2, etiquetaNombreAlbumes;
private JButton botonBuscar, botonEliminar, botonModificar, botonSeleccionar;
private JList listadoAlbumes;
private DefaultListModel modeloLista;
private JSeparator separador;
private JScrollPane scrollListadoAlbumes;
private Generador miGenerador;

/**
 * Iniciamos la ventana.
 */
public VistaArtistasBuscar() {
    iniciarVentana();
}

/**
 * Contenido de la ventana
 */
private void iniciarVentana() {

    /*Propiedades Frame*/
    setTitle("Artistas: Buscar");
    setBounds(200, 100, 450, 337);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    getContentPane().setLayout(null);
    setLocationRelativeTo(null);
    setResizable(false);

    /*Etiqueta nombre Artista I*/
    etiquetaNombreArtista = new JLabel("Nombre:");
    etiquetaNombreArtista.setFont(new Font("Tahoma", Font.PLAIN, 14));
    etiquetaNombreArtista.setBounds(10, 6, 68, 22);

    /*Campo texto Artista I*/
    campoTextoArtista = new JTextField();
    campoTextoArtista.setBounds(78, 6, 259, 22);
    campoTextoArtista.setColumns(10);

    /*Boton Buscar*/
    botonBuscar = new JButton("Buscar");
    botonBuscar.setBounds(347, 6, 77, 23);
    botonBuscar.addActionListener(this);
    getContentPane().setLayout(null);
    getContentPane().add(etiquetaNombreArtista);
    getContentPane().add(campoTextoArtista);
    getContentPane().add(botonBuscar);

    /*Etiqueta nombre Artista II*/
    etiquetaNombreArtista2 = new JLabel("Nombre:");
    etiquetaNombreArtista2.setFont(new Font("Tahoma", Font.PLAIN, 14));
    etiquetaNombreArtista2.setBounds(10, 56, 68, 14);
    getContentPane().add(etiquetaNombreArtista2);

    /*Campo texto Artista II*/
    campoTextoArtista2 = new JTextField();
    campoTextoArtista2.setBounds(82, 55, 241, 20);
    getContentPane().add(campoTextoArtista2);
    campoTextoArtista2.setColumns(10);

    /*Boton Eliminar*/
    botonEliminar = new JButton("Eliminar");
    botonEliminar.setBounds(234, 92, 89, 23);
    botonEliminar.addActionListener(this);
    getContentPane().add(botonEliminar);

    /*Boton Modificar*/
    botonModificar = new JButton("Modificar");
    botonModificar.setBounds(135, 92, 89, 23);
    botonModificar.addActionListener(this);
    getContentPane().add(botonModificar);

    /*Etiqueta Albumes*/
    etiquetaNombreAlbumes = new JLabel("Albumes:");
    etiquetaNombreAlbumes.setFont(new Font("Tahoma", Font.PLAIN, 14));
    etiquetaNombreAlbumes.setBounds(10, 134, 89, 14);
    getContentPane().add(etiquetaNombreAlbumes);

    /*Boton Seleccionar*/
    botonSeleccionar = new JButton("Seleccionar");
    botonSeleccionar.setBounds(335, 265, 89, 23);
    botonSeleccionar.addActionListener(this);
    getContentPane().add(botonSeleccionar);

    /*Separador*/
    separador = new JSeparator();
    separador.setBounds(0, 39, 434, 2);
    getContentPane().add(separador);

    /*Scroll para el listado de los Artistas*/
    scrollListadoAlbumes = new JScrollPane();
    listadoAlbumes = new JList();
    modeloLista=new DefaultListModel();
    scrollListadoAlbumes.setBounds(10, 154, 306, 135);
    getContentPane().add(scrollListadoAlbumes);
    scrollListadoAlbumes.setViewportView(listadoAlbumes);

}

/**
 * Relacionamos esta clase con el Coordinador
 */

public void setCoordinador(Coordinador miCoordinador){
    this.miCoordinador=miCoordinador;
}

/**
 * Clase que maneja todos los eventos que ocurren en la ventana
 */

@Override
public void actionPerformed(ActionEvent evento) {

    if(evento.getSource()==botonBuscar){

        try{
        ArtistaDAO artistaDAO=new ArtistaDAO();
        ArtistaVO artistaVO=new ArtistaVO();
        miGenerador=new Generador();

        artistaVO.setNombreArtista(campoTextoArtista.getText());
        artistaDAO.buscarArtista(artistaVO);
            if(artistaDAO.buscarArtista(artistaVO)!=null){
                mostrarArtista(artistaVO);
                miGenerador.llenarListaAlbumes(artistaVO, modeloLista, listadoAlbumes, artistaDAO);
            }else{
            JOptionPane.showMessageDialog(null, "El artista no existe", "Error", JOptionPane.ERROR_MESSAGE);
            }
        }catch(Exception excepcion){
            excepcion.printStackTrace();
        }

    }

    if(evento.getSource()==botonModificar){
        try{
            ArtistaVO artistaVO=new ArtistaVO();
            ArtistaDAO artistaDAO=new ArtistaDAO();
            String nuevoNombre=campoTextoArtista2.getText();
            artistaVO.setNombreArtista(campoTextoArtista.getText());
            artistaDAO.modificarArtista(artistaVO, nuevoNombre);
        }catch(Exception excepcion){
            excepcion.printStackTrace();
        }
    }

    if(evento.getSource()==botonEliminar){
        if(!campoTextoArtista2.getText().equals("")){
            int respuesta=JOptionPane.showConfirmDialog(this, "¿Estás seguro que deseas eliminar el Artista?", "Confirmacion", JOptionPane.YES_NO_OPTION);
            if(respuesta==JOptionPane.YES_OPTION){
                ArtistaDAO artistaDAO=new ArtistaDAO();
                ArtistaVO artistaVO=new ArtistaVO();
                AlbumVO albumVO=new AlbumVO();

                albumVO.setNombreAlbum(listadoAlbumes.getSelectedValue().toString());
                artistaVO.setNombreArtista(campoTextoArtista2.getText());
                artistaDAO.eliminarArtista(artistaVO, artistaDAO, albumVO);
                limpiar();
                modeloLista.removeAllElements();
            }
        }
    }

    if(listadoAlbumes.getSelectedIndex()>=0&&evento.getSource()==botonSeleccionar){
        VistaAlbumesBuscar ventanaAlbumBuscar=new VistaAlbumesBuscar();

        ventanaAlbumBuscar.setVisible(true);
        ventanaAlbumBuscar.abrirVentana(campoTextoArtista2, modeloLista, listadoAlbumes);

    }else if(evento.getSource()==botonSeleccionar){
        JOptionPane.showMessageDialog(null, "Debes elegir un Album de la lista","Información",JOptionPane.INFORMATION_MESSAGE);
    }



}

/**
 * Establecemos el contenido del Campo texto tras la búsqueda
 */

private void mostrarArtista(ArtistaVO artistaVO){
    campoTextoArtista2.setText(artistaVO.getNombreArtista());
}


private void limpiar(){
    campoTextoArtista.setText("");
    campoTextoArtista2.setText("");
}


} 

Здесь у меня есть другое окно, которое называется VistaAlbumesBuscar, и это код:

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());
}

}

Так как моя проблема ставит, дело в том, что в окне 'VistaArtistasBuscar' я с там ищу один Artista, и этот показывает меня ему со всеми Ваш Albumон, так как я хочу, что после того, как считаю отборным один Album и щелкни в кнопке выбирать, открыли мне окно 'VistaAlbumesBuscar' показывая данные Artista, уже это имя этого, имя Album и список Cancionоно присоединено с этим Album, одновременно, что JComboBox Artista и Album содержите оставшуюся часть имени, но которое, открыв окно, указали бы на эти имена, как я показываю в этом изображении, и вы можете видеть, как это два окна:

Ejemplo

Здесь я оставляю методы, которые я использовал, чтобы наполнять JComboBox и JList окна VistaAlbumesBuscar:

 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();
    }
  }

 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();
    }
  }

И поскольку вы можете видеть внутри окна VistaAlbumesBuscar я создал так называемый метод abrirVentana которого я называю с VistaArtistasBuscar который вы можете видеть здесь:

   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());
   }

И вызов с VistaArtistasBuscar он такой, который я схватил (Очевидно он идет внутри ActionListener, как вы можете подтверждать в VistaArtistasBuscar):

  if(listadoAlbumes.getSelectedIndex()>=0&&evento.getSource()==botonSeleccionar){
        VistaAlbumesBuscar ventanaAlbumBuscar=new VistaAlbumesBuscar();

        ventanaAlbumBuscar.setVisible(true);
        ventanaAlbumBuscar.abrirVentana(campoTextoArtista2, modeloLista, listadoAlbumes);
               }

Проблема состоит в том, что он открывает мне окно, но появляется в мишени также, с JComboBox наполнения, но не показывая стоимости предыдущего окна; так что мне хотелось бы, что вы помогли мне видеть, что плохое в этом методе, или как мочь делать то, что я желаю, хотя он будет используя другую форму.

4
задан 14.05.2016, 20:15
2 ответа

Я проверял ты cГіdigo и не нахожу такую ясную ошибку, что я наблюдаю, состоит в том, что, когда ты пишешь имя например

ac/dc

, ты это делаешь в строчных буквах, и на втором этом экране:

AC/DC

ты протестировал помещать имя как эту на втором экране? Возможно поэтому он не выбирается, с которым ни одна буква отличалась уже, оно не функционировало бы, так как ты выбираешь статью посредством elegirArtista.setSelectedItem(campoTextoArtista2.getText());

1
ответ дан 24.11.2019, 14:22
  • 1
    Действительно это было этим, пойдите tonter и # 237; в проблемы, не, поскольку со мной не случилось; much и # 237; пропасти спасибо. –  NeoChiri 16.05.2016, 13:27
    if(listadoAlbumes.getSelectedIndex()>=0&&evento.getSource()==botonSeleccionar){
                    VistaAlbumesBuscar ventanaAlbumBuscar=new VistaAlbumesBuscar();


                    ventanaAlbumBuscar.abrirVentana(campoTextoArtista2, modeloLista, listadoAlbumes);
 ventanaAlbumBuscar.setVisible(true);
        }

Probá этот код. Он старается не добавлять компоненты к окну, сделав ее видимой, или если ты это делаешь, обновлять ее.

0
ответ дан 24.11.2019, 14:22
  • 1
    Я это протестировал туз и # 237; и меня продолжают вытекать равным. –  NeoChiri 15.05.2016, 04:04