2014-09-25 2 views
0

Я не уверен, что я здесь делаю неправильно. Я пытаюсь создать базовую командную строку с помощью JFrame, которая в будущем я хочу создать кучу функций, которые будут выполняться на основе ввода пользователя, однако, когда я пытаюсь сравнить ActionCommand с строкой или переменной, это не похоже на работу:Java getActionCommand() не может сравниться с строкой, использующей оператор if?

`

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: «Введите команду», как только я напишу в командной строке EXACT LY, что оператор if пытается сравнить «event.getActionCommand()», он все равно выводит «uh dear» (что он делает, если он не сравнивает его ни с чем)

Как я могу предположить чтобы исправить это? Спасибо.

ответ

1

При сравнении объектов вы должны использовать функцию .equals, иначе вы сравниваете ссылку.

Так,

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

Станет

if(event.getSource().equals(cmd)){ 
    if(event.getActionCommand().equals(butt)){ 
     ... 
Смежные вопросы