繁体   English   中英

从jButton获取文本值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM