我不确定我在这里做错了什么。我正在尝试使用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()"到,它仍然输出"呃亲爱的" (如果它没有将它与任何东西进行比较,它会做什么)
我该如何解决这个问题?谢谢。
答案 0 :(得分:1)
比较对象时,必须使用.equals
函数,否则就是比较参考。
所以,
if(event.getSource()==cmd){
if(event.getActionCommand()==butt){
...
将成为
if(event.getSource().equals(cmd)){
if(event.getActionCommand().equals(butt)){
...