我的程序有问题。这是我的代码:
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?
希望有人可以帮助我。谢谢你的帮助。
答案 0 :(得分:1)
仔细看看这个...
String command = e.getActionCommand();
if (command.equals(btn1)){
command
是String
而btn1
是JButton
,他们什么时候可能是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);
}
});