2017-05-26 34 views
0

与JFrame中打开另一个窗口,我需要你的help.I是学习Java Swing和我卡在尝试使用下面的代码来打开从主窗口另一个窗口:在Java中

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

    } 
} 
+3

1)为了更好地帮助更快,发布[MCVE]或[短的,独立的,正确的示例](HTTP ://www.sscce.org/)。 2)**请参阅[使用多个JFrames,好/坏实践?](http://stackoverflow.com/q/9554636/418556)** –

回答

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