用Java中的Jframe打开另一个窗口

时间:2017-05-26 08:45:26

标签: java swing

我需要你的帮助。我正在学习Java Swing,并且我仍然试图使用以下代码从主窗口打开另一个窗口:

我不知道自己做错了什么,因为当我点击下拉菜单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);
            }
        }

    }
}

1 个答案:

答案 0 :(得分:0)

您的JDialog没有parent specified。尝试像这样给你的JFrame实例作为所有者。

JDialog mydialog = new JDialog(REFERENCE_TO_THE_JFRAME);

作为帮助,您可能希望像这样更改代码

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