![](/img/trans.png)
[英]Getting text from a JTextArea using a JButton and a JTabbedPane
[英]Getting text value from a jButton
因此,我只需要简单地检查一下单击的按钮的文本是"X"
还是"O"
(打井字)就不会执行此代码:
if (jButton1.getText()=="X")
但是,以下代码可以正常工作:
String jButText = jButton1.getText();
if (jButText=="X")
为什么第一部分代码不起作用而第二部分代码却起作用? 它是否需要更像if( jButton1.getText().toString=="X"
)? 顺便说一句,我认为Java中不存在toString
。 这只是Visual Basic中的等效项,这是我通常用来创建GUI的项。
此行为在Java 1.7.0_45或1.7.0_25中不可重现,对于您的Java版本,这可能是String Interning的怪异现象。
为了使您的代码在所有Java版本上都能正常工作,您必须使用equals()
==
比较对象,而.equals()
比较字符串对象的内容。
jButton1.getText().equals("X")
使用AWT Button类时,这也让我发疯了...这是答案:Button没有.getText()方法...您需要使用.getLabel()
现在,有关JButtons的故事:根据您的Java版本,不赞成使用getLabel(),最后将其替换为getText ...名称空间不是很好吗?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyFrame extends JFrame{
JButton equalsButton;
JLabel ansLabel;
JLabel addLabel;
JTextField text1;
JTextField text2;
MyFrame (){
setSize(300,300);
setDefaultCloseOperation(3);
setLayout(new FlowLayout());
text1=new JTextField(10);
add(text1);
addLabel=new JLabel("+");
add(addLabel);
text2=new JTextField(10);
add(text2);
equalsButton=new JButton("=");
equalsButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
int num1=Integer.parseInt(text1.getText());
int num2=Integer.parseInt(text2.getText());
int tot=num1+num2;
ansLabel.setText(Integer.toString(tot));
}
});
add(equalsButton);
ansLabel=new JLabel(" ");
add(ansLabel);
pack();
setVisible(true);
}
}
class Demo{
public static void main(String args[]){
MyFrame f1=new MyFrame();
}
}
在Java中,当使用==比较字符串时,正在比较它们的内存地址,以检查两个字符串是否包含相同的文本,应调用.equals()
if ("X".equals(jButton1.getText()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.