从jButton获取文本值

时间:2013-11-19 21:07:54

标签: java swing user-interface jbutton

所以我只需要检查点击按钮的文字是"X"还是"O"(制作tic tac toe) 此代码不起作用:

if (jButton1.getText()=="X")

但是以下代码确实有效:

String jButText = jButton1.getText();
if (jButText=="X")

为什么第二部分代码不能在第二部分工作时起作用?它是否需要更像if(jButton1.getText().toString=="X")?顺便说一下,我认为Java中不存在toString。这在Visual Basic中有点相同,这是我通常用来创建GUI的。

4 个答案:

答案 0 :(得分:2)

此行为在java 1.7.0_45或1.7.0_25中不可重现,对于您的Java版本,String interning可能会出现奇怪的现象。

为了让您的代码在所有Java版本上正常运行,您必须使用equals()

==比较对象,同时.equals()比较字符串对象的内容。

jButton1.getText().equals("X")

答案 1 :(得分:1)

使用AWT Button类时,这也让我感到疯狂......这就是答案:Button没有.getText()方法......你需要使用.getLabel()

现在,JButtons的故事:根据您的java版本,不推荐使用getLabel(),最后用getText代替......不是名称空间很棒吗?

答案 2 :(得分:1)

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();

    }
}

答案 3 :(得分:0)

在java中使用==比较字符串时,你要比较它们的内存地址,检查两个字符串是否包含你应该调用的相同文本.equals()

if ("X".equals(jButton1.getText()))