简体   繁体   中英

Open another window with Jframe in Java

I need your help.I was learning Java Swing and I'm stuck on trying to open another window from the main window using the following code:

I don't know what I did wrong because the new window didn't show up when I clicked on the Information button which is from the dropdown menu Opciones.

*/
public class Ventana1 extends JFrame {
    JButton borrar, anadir,cerrar,modificar;
    JFrame panel1;
    public Ventana1() {
          panel1=new JFrame();
        setVisible(true);
        setSize(new Dimension(500,500));
        setLocation(200,200);
//        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        crearMenu();
    }
     public void crearMenu(){
        JMenuBar barra=new JMenuBar();
         JMenu archi=new JMenu("Archivos");
        JMenu menu=new JMenu("Opciones");
        JMenuItem añPalabra=new JMenuItem("Añadir ");
        añPalabra.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               JDialog mydialog = new JDialog();
                mydialog.setSize(new Dimension(400,100));
                mydialog.setTitle("I got you! You can't click on your JFrame now!");
//                mydialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); // prevent user from doing something else
                mydialog.setVisible(true);
            }
        });
        JMenuItem info=new JMenuItem("Informacion");
        info.addActionListener(new escuchadorAniadirPalabra());
        menu.add(añPalabra);
        menu.add(info);
        JMenuItem ayuda=new JMenuItem("Ayuda");
//        ayuda.addActionListener(new escuchadorAyuda());
        menu.add(ayuda);
        barra.add(archi);
        barra.add(menu);

        this.setJMenuBar(barra);

    }
      public void panelDibujo(){

        JFrame panel=new JFrame();

        setVisible(true);
        setSize(new Dimension(300,300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        anadir=new JButton();
        anadir.setText("Add");
        panel.add(anadir);
//        panel.add(anadir,JPanel.CENTER_ALIGNMENT);
//        TitledBorder ti= new TitledBorder("Dibujo");
//        panel.setBorder(ti);
//        return panel;
    }
    class escuchadorAniadirPalabra implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
//            String cadena=JOptionPane.showInputDialog("Introduzca la Palabra que quiera añadir");
//            palabras.add(cadena);


            try {

                 System.out.println("haha");
                 panelDibujo();
            } catch (Exception ex) {
                Logger.getLogger(Ventana1.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }
}

Your JDialog doesn't have a parent specified . Try giving your JFrame instance as the owner like this.

JDialog mydialog = new JDialog(REFERENCE_TO_THE_JFRAME);

As a help, you may want to change your code like this

public class Ventana1 extends JFrame implements ActionListener{
    JButton borrar, anadir,cerrar,modificar;
    JFrame panel1;
    public Ventana1() {
        panel1=new JFrame();
        setVisible(true);
        setSize(new Dimension(500,500));
        setLocation(200,200);
//        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        crearMenu();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JDialog mydialog = new JDialog(this);
        mydialog.setSize(new Dimension(400,100));
        mydialog.setTitle("I got you! You can't click on your JFrame now!");
//                mydialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); // prevent user from doing something else
        mydialog.setVisible(true);
    }

     public void crearMenu(){
        JMenuBar barra=new JMenuBar();
        JMenu archi=new JMenu("Archivos");
        JMenu menu=new JMenu("Opciones");
        JMenuItem añPalabra=new JMenuItem("Añadir ");
        añPalabra.addActionListener(this);
        JMenuItem info=new JMenuItem("Informacion");
        info.addActionListener(new escuchadorAniadirPalabra());
        menu.add(añPalabra);
        menu.add(info);
        JMenuItem ayuda=new JMenuItem("Ayuda");
//        ayuda.addActionListener(new escuchadorAyuda());
        menu.add(ayuda);
        barra.add(archi);
        barra.add(menu);

        this.setJMenuBar(barra);

    }
      public void panelDibujo(){

        JFrame panel=new JFrame();

        setVisible(true);
        setSize(new Dimension(300,300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        anadir=new JButton();
        anadir.setText("Add");
        panel.add(anadir);
//        panel.add(anadir,JPanel.CENTER_ALIGNMENT);
//        TitledBorder ti= new TitledBorder("Dibujo");
//        panel.setBorder(ti);
//        return panel;
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM