java - ActionPerformed 方法不起作用

标签 java swing actionlistener

我想在与按钮关联的 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添加到面板之前添加 Action 监听器,并显示jdialog,然后它就可以工作:更改代码如下:

    /**
     * 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());



    }

关于java - ActionPerformed 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37544517/

相关文章:

java - 内部/外部类 obj.new

java - 使用 Java 解析 HTML 文件

java - 如何使用 javax.swing.text.AsyncBoxView 将 JTextPane 中的文本布局委托(delegate)给非 EDT 线程?

java - 在java中将ActionListener合并到MouseMotionListener

java - 单击时 JMenuItem 显示一个空的 Jframe

java - 当每行都可以抛出时避免多次 try catch

java - 游程长度编码(输出数据中每个重复序列的长度以及数据值)

Java:GridLayout垂直元素对齐

java - 为什么在linux下运行时不显示任何帧?

java - 为什么在按下按钮之前会绘制一个方框?