2016-05-31 159 views
0

我想執行與按鈕關聯的ActionPerformed方法內的方法,但不起作用。我在很多時間進行研究,但是我無法檢測到錯誤。ActionPerformed方法不起作用

這是我的代碼:

/** 
* Método que crea un nuevo usuario en el sistema 
* y lo guarda en el arrayList de usuarios 
*/ 
public static void crearUsuario() 
{  
    JPanel panelCrearUsuario = new JPanel(); 
    JDialog frame = new JDialog();  

    //label nuevo usuario 
    panelCrearUsuario.add(new JLabel("Nuevo Usuario: ")); 

    //textbox nuevo usuario 
    JTextField jtNombreUsuario = new JTextField(15); 
    panelCrearUsuario.add(jtNombreUsuario); 

    //label DNI 
    panelCrearUsuario.add(new JLabel("DNI usuario: ")); 

    //textbox DNI 
    JTextField jtDNIUsuario = new JTextField(15); 
    panelCrearUsuario.add(jtDNIUsuario); 

    //botón crear usuario 
    JButton JButtonCrearUsuario = new JButton("Crear usuario"); 
    panelCrearUsuario.add(JButtonCrearUsuario); 

    frame.getContentPane().add(panelCrearUsuario); 
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

    frame.pack(); 
    frame.setSize(420, 460); 
    frame.setModal(true); 
    frame.setVisible(true); 

    Usuario u = new Usuario(); 
    u.setNombre(jtNombreUsuario.getText()); 
    u.setDNI(jtDNIUsuario.getText()); 

    JButtonCrearUsuario.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      //Debbuging the IDE doesn't enter here :(
      System.out.println("blablabla"); 
      JButtonCrearUsuarioEvento(u); 
     } 

    }); 

} 

我這樣嘗試過:

ActionListener listener = new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 

      System.out.println("blablabla"); 
      JButtonCrearUsuarioEvento(u); 

     } 
    }; 

    JButtonCrearUsuario.addActionListener(listener); 

東西能幫助我嗎?錯誤在哪裏? 。:( 我真的很感謝所有幫助

在此先感謝;加入一個JButton到面板,並且顯示的JDialog之前)

+1

1)爲了更好地提供幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 2)請學習常用的Java命名規則(命名約定 - 例如'EachWordUpperCaseClass','firstWordLowerCaseMethod()','firstWordLowerCaseAttribute',除非它是'UPPER_CASE_CONSTANT')並且一致地使用它。 –

+0

什麼不工作?你的調試器沒有進入你的actionPerformed?你沒有看到消息'blablabla'?你沒有看到屏幕上的按鈕? –

回答

2

添加動作監聽器,那麼它會工作:如下面的代碼的變化:

/** 
    * Método que crea un nuevo usuario en el sistema 
    * y lo guarda en el arrayList de usuarios 
    */ 
    public static void crearUsuario() 
    {  
     JPanel panelCrearUsuario = new JPanel(); 
     JDialog frame = new JDialog();  

     //label nuevo usuario 
     panelCrearUsuario.add(new JLabel("Nuevo Usuario: ")); 

     //textbox nuevo usuario 
     JTextField jtNombreUsuario = new JTextField(15); 
     panelCrearUsuario.add(jtNombreUsuario); 

     //label DNI 
     panelCrearUsuario.add(new JLabel("DNI usuario: ")); 

     //textbox DNI 
     JTextField jtDNIUsuario = new JTextField(15); 
     panelCrearUsuario.add(jtDNIUsuario); 

     //botón crear usuario 
     JButton JButtonCrearUsuario = new JButton("Crear usuario"); 

JButtonCrearUsuario.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       //Debbuging the IDE doesn't enter here :(
       System.out.println("blablabla"); 
       JButtonCrearUsuarioEvento(u); 
      } 

     }); 

     panelCrearUsuario.add(JButtonCrearUsuario); 

     frame.getContentPane().add(panelCrearUsuario); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

     frame.pack(); 
     frame.setSize(420, 460); 
     frame.setModal(true); 
     frame.setVisible(true); 

     Usuario u = new Usuario(); 
     u.setNombre(jtNombreUsuario.getText()); 
     u.setDNI(jtDNIUsuario.getText()); 



    } 
+0

非常感謝!現在工作正常! ;) – MadDev