ActionEvent不会出现

时间:2015-03-10 00:48:17

标签: java swing awt actionevent

我的程序有问题。这是我的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;`

public class click_rep extends JFrame{`

    public click_rep(){

        super("CLICK");
        final JButton btn1 = new JButton("CLICK HERE");
        final JLabel label = new JLabel();
        FlowLayout flo = new FlowLayout();
        setLayout(flo);
        add(btn1);
        setSize(315,120);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        btn1.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e){
                try{
                    String command = e.getActionCommand();
                    if (command.equals(btn1)){
                        label.setText("CLICK");
                        setVisible(true);
                    }
                }catch(Exception e1){
                    e1.printStackTrace();
                }

            }


        });

    }

    public static void main(String[] a){
        click_rep cp = new click_rep();
    }

}

我的问题是ActionEvent不会出现。我该怎么做才能出现ActionEvent?

希望有人可以帮助我。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

仔细看看这个...

String command = e.getActionCommand();
if (command.equals(btn1)){

commandStringbtn1JButton,他们什么时候可能是equal

有几种方法可以修复它,例如,你可以做这样的事情......

if ("CLICK HERE".equals(command)) {

或类似的东西......

if (e.getSource() == btn1) {

但我更喜欢第一个......

但是,因为ActionListener是一个注册到btn1的烦人聆听者,所以事件的来源永远不会是btn1以外的其他内容,所以你可以简单地做这样的事情而不是...

btn1.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent e){
        label.setText("CLICK");
        // Not sure what this is meant for, as the component
        // must already be visible in order for the user to 
        // activate the button...
        setVisible(true); 
    }

});