2014-09-25 71 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()」,它仍然會輸出「呃親愛的」(如果它沒有和任何東西進行比較,這就是它的作用)

我應該怎麼做解決這個問題?謝謝。

回答

1

比較對象時,必須使用.equals函數,否則您正在比較引用。

所以,

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

將成爲

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