我对Java很陌生,一直在研究GUI的工作方式。通过一些教程,我设法将一个程序组合在一起以使用文本框,并希望将我作为第一个项目制作的计算器纳入其中。我关注的区域是按钮和动作侦听器,在其中键入“ calc”时我会尝试获得额外的响应。
我尝试在程序外部初始化额外的响应,但是由于在内部调用了字符串,因此无法正常工作。我也尝试过在外部调用该字符串,但这仍然行不通。我有一个想法,做任何超出此要求的事情都需要单独调用函数,但是我希望首先从找出这小部分开始。
static JTextField tf;
static JFrame frame;
static JPanel panel;
static JTextArea ta;
int count;
int num1;
int num2;
int exp;
char operator;
double answer;
static void GUI() {
frame = new JFrame("Thank you for reading this");
panel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
JButton button = new JButton("Test");
tf = new JTextField(15);
panel.add(tf);
panel.add(button);
JTextArea ta = new JTextArea();
ta.setEditable(false);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
ta.append(text+"\n");
if(text == "q") {
ta.append("something random\n");
}
}
});
frame.getContentPane().add(BorderLayout.CENTER, ta);
frame.getContentPane().add(BorderLayout.SOUTH, panel);
frame.setVisible(true);
}
public static void main(String[] args) {
GUI();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
当在文本字段中键入“ calc”时,我希望看到“随机”。到目前为止,如果使用if语句,我什么也没收到
答案 0 :(得分:1)
首先,==
运算符匹配reference
或Strings
中的Objects
而不是实际值。 String
不是primitive
数据类型,因此您可以使用==
比较其值。您需要为此调用equals()
方法:
if(text.equals("q")) {
ta.append("something random\n");
}
答案 1 :(得分:1)
在比较对象的值相等性时,请使用equals
而不是==
,因为==
正在检查引用相等性。
因此,不用text == "q"
来写text.equals("q")
;