【问题标题】:ActionPerformed method doesn't workActionPerformed 方法不起作用
【发布时间】:2016-05-31 19:42:22
【问题描述】:

我想在与按钮关联的 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);

有什么可以帮助我的吗?错误在哪里? :( 非常感谢任何帮助。

提前致谢。 ;)

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example。 2) 请学习常见的 Java 命名法(命名约定 - 例如EachWordUpperCaseClassfirstWordLowerCaseMethod()firstWordLowerCaseAttribute,除非它是 UPPER_CASE_CONSTANT)并始终如一地使用它。
  • 究竟是什么不起作用?你的调试器没有进入你的 actionPerformed?您没有看到“blablabla”消息吗?您没有在屏幕上看到按钮?

标签: java swing actionlistener


【解决方案1】:

在将JButton添加到面板之前添加动作监听器,并显示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());



    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多