Software Guru Conference & Expo 2014

Abrir una ventana desde un botón en la ventana principal

Hola,

Quiero abrir una ventana desde un jMenuItem5MouseClicked() en la ventana principal, lo he intentando de varias maneras pero no lo consigo.

esta es la ventana que quiero abrir:

public class UsuariosView extends javax.swing.JFrame {

    /** Creates new form UsuariosView */
    public UsuariosView() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setName("Form"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jTable1.setName("jTable1"); // NOI18N
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(13, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(13, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AgentesView().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration

}

Agradecería cualquier ayuda.

Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de camiloleal

Intenta

en el evento del JmenuItem pon esto new UsuarioView().setVisible(true);

Gracias pero no va

Gracias Camiloleal,

pero no funciona, no encuentra setvisible(), y si lo fuerzo me marca error el NB.

También he intentado lo siguiente, no me marca error, pero tampoco me abre la ventana.

private void jMenuItem5MouseClicked(java.awt.event.MouseEvent evt) {                                        
            UsuariosView view = new UsuariosView();
            view.setVisible(true);
    }

Saludos

esto es lo que me dice NB

cuando pongo lo que me recomiendas

non-static method setVisible(boolean) cannot be referenced from a static context

¿como se puede referenciar desde un contexto estático?

Imagen de JaimeItlzc

Haber

Yo no entiendo podrias ponerme el codigo donde la quieres mandar llamar por que como que mandar llamar una ventana esta muy facil y que no te salga vamos a haber ami me salio JFrame con un JTable.

Podrias poner donde lo quieres mandar llamar o abrir?

Saludos.

Imagen de JaimeItlzc

Jbutton actionPerformed

Bueno aqui te dejo un ejemplo:

button = new JButton("Boton para abrir segunda ventana");
button.setBounds(5, 30, 150, 20);
ventana.add(button); // Agrega el boton a la ventana.
button.addActionListener(this);

/*Evento*/
public void actionPerformed(ActionEvent arg0) {
if (button == arg0.getSource()){
Prueba windows = new Prueba("SEGUNDA VENTANA","Esta es la segunda ventana");
ventana.setBounds(50, 50, 300, 150);
  }
}

Digiera Nopalin Sobres!
Saludos.

Sí es este: private void

Sí es este:

private void jMenuItem5MouseClicked(java.awt.event.MouseEvent evt) {                                        
           UsuariosView.setVisible(true);
    }

es un evento mouseclick que hice desde la vista diseño de NB, y estoy intentando que al hacer clic abra la ventana.

Esto es dentro de la clase AppView.java, que es el JFrame (que se usa como ventana principal de la app) que crea NetBeans por defecto al crear un proyecto java desktop application.

Saludos y gracias.

Gracias pero creo que no me resuelve el problema

Ya tengo el botón, y la ventana en otra clase que hice desde la vista diseño (la que está arriba, en el primer hilo). Lo que quiero es llamar a esa ventana desde el MouseEvent de la ventana principal de la aplicación.

Me sale esto cuando pongo UsuariosView.setVisible(true)

non-static method setVisible(boolean) cannot be referenced from a static context

¿Alguna idea?, no pido que pongan un ejemplo, si es posible una breve explicación de ese mensaje, estaría bueno (para saber que ocurre, lo que hago mal) .

Saludos

Imagen de JaimeItlzc

Haber prueba esto.

JMenu fileMenu = new JMenu("Menu");
        menuBar.add(fileMenu);

JMenuItem newMenuItem = new JMenuItem("Crear");
fileMenu.add(newMenuItem);
setJMenuBar(menuBar);

newMenuItem.addActionListener(
                        new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                   
                                    UsuariosView lol=new UsuariosView();
                                    lol.setVisible(true);
                                                                              }
                                                                  }
                                                    );

Saludos.

Si se fijan de donde extiende la clase UsuariosView

verán que extiende de FrameView(), y por lo que dice aquí

    Todo esto nos indica lo siguiente:
  • Un JFrame debe ser la ventana principal de nuestra aplicación y sólo debe haber una.
  • Las ventanas secundarias de nuestra aplicación deben ser JDialog.

Eso tampoco me vale

El código del menú lo genera NetBeans, no lo puedo modificar, solo tengo que hacer visible la ventana en este MouseEvent que generó NetBeans,

 private void jMenuItem5MouseClicked(java.awt.event.MouseEvent evt) {                                        
           
    }

Todo lo demás está creado.

Son 2 formularios de interfaz gráfica de Swing, un formulario JFrame (padre) y otro JDialog (hijo). Y en el padre ya hay un botón con un MouseEvent , solo hay que mostrar el hijo, nada más.

Saludos

Imagen de JaimeItlzc

lol

Yo se que el Netbeans te genera el codigo pero quien dice que no lo puedes modificar? se puede modificar Si quieres quitas:

private void jMenuItem5MouseClicked(java.awt.event.MouseEvent evt) {                                        
           
    }

y pones

 private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {                                                
        mostrarVentanaDos();
    }
public void mostrarVentanaDos() {
                                   UsuariosView lol=new UsuariosView();
                                    lol.setVisible(true);
                                   lol.setLocationRelativeTo(this);
  }

Saludos.

Sí señor

Ahora sí,

Gracias y saludos!

Problemas al abrir una ventana

Mi problema es que intento abrir una ventana dentro de un boton, ya lo habia hecho con otros 6 botones mas pero al 7 no me quizo salir
" ActionPerformed "; he intentado colocarle cualquier otro evento pero no me sive (ComponentAdded, WindowActivated, MouseClicked, etc)
:s no sé el por qué me comenzó a molestar y necesito de urgencia seguir con mi trabajo; ya le puse "jFjar.setVisible(true);
jFjar.setSize(400,250); " a las ventanas nuevas no se que hacer!!!! plss ayuda.

Imagen de ArenasMx

sería bueno que postearas el

sería bueno que postearas el código para poder saber en que esta fallando, por lo que entiendo es que tiene tu ventana principal (JFame supongo) en al cual tienes un panel en el cual hay un boton y tu quieres cuando presiones el boton se despliegue una nueva ventana (JInternalFrame), obviemente si tienes más de un boton tienes que diferenciar el origen del evento con el event.getSource() o alguna implementacion similar y dentro del bloque colocas la inicializacion del JInternalFrame JInternalFramen  miventana = new JInternalFrame(); obvieamente le coloscas las dimensiones la visibilidad y la posicion donde quieres que aparesca

Imagen de Jose Manuel

Isis lo mejor seria que

Isis lo mejor seria que crearas un hilo nuevo pues este ya tiene su tiempo, no hagas comentarios innecesarios.
Cuando lo hagas se te podra ayudar de mejor manera.
Saludos.