Java getActionCommand()无法与使用If语句的String进行比较?

时间:2014-09-25 16:51:25

标签: java swing if-statement

我不确定我在这里做错了什么。我正在尝试使用JFrame创建一个基本命令行,以后我想创建一组将根据用户输入完成的函数,但是,当我尝试将ActionCommand与一个字符串或变量,它似乎不起作用:

`

    import javax.swing.*;
    import javax.swing.JFrame;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;


    public class GUI extends JFrame{

private JTextField cmd;


public GUI(){
    super("Command Line V2");       //Window title
    setLayout(new FlowLayout());            //Set layout

    cmd = new JTextField("Enter Command");  //Make cmd a JTextField
    add(cmd);                               //Add cmd to the screen

    //Adding action listeners
    cmdHandler handler = new cmdHandler();
    cmd.addActionListener(handler);


}

private class cmdHandler implements ActionListener{
    public void actionPerformed(ActionEvent event){


        String butt = "Whut";

        if(event.getSource()==cmd){
            if(event.getActionCommand()==butt){

                System.out.println("Yay");
            }else{
                System.out.println("uh dear");
                System.out.println(event.getActionCommand());
            }


        }




    }
}`

这是GUI.java页面,但只是需要它,这里是main.java页面:

        import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.FlowLayout;

    public class Main {

public static void main(String args[]){

    GUI g = new GUI();
    g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    g.setSize(275,180);
    g.setVisible(true);
    g.setResizable(false);
}

    }

打开时,会打开一个窗口并显示一个JTextBox:"输入命令"一旦我在命令行中确切地写了if语句试图比较" event.getActionCommand()"到,它仍然输出"呃亲爱的" (如果它没有将它与任何东西进行比较,它会做什么)

我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:1)

比较对象时,必须使用.equals函数,否则就是比较参考。

所以,

if(event.getSource()==cmd){
    if(event.getActionCommand()==butt){
        ...

将成为

if(event.getSource().equals(cmd)){
    if(event.getActionCommand().equals(butt)){
        ...