繁体   English   中英

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

[英]Open another window with Jframe in Java

我需要您的帮助。我正在学习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);
            }
        }

    }
}

您的JDialog没有指定父对象 尝试像这样将您的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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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