从JTextfield获取输入

时间:2012-10-28 00:46:47

标签: java

我正在尝试让'enlargeListener实现ActionListener'类从shapeName JTextField获取输入并将其应用到for循环中。规范是如果从shapeName JTextfield获取的shapeName.getText()返回的内容与循环中指定的内容(aka ==“rectangle”或==“circle”)匹配,则它将实现放大或缩小方法。

问题是我知道它返回JTextField中的内容...但即使它符合循环的资格......循环仍然失败,我无法弄清楚原因。

例如..如果我在第一个文本框中输入'rectangle',它将返回到'enlargeListener implements'类下的for循环作为字符串“rectangle”。然而,当它针对==“矩形”进行测试时,它仍然会失败。我已经梳理了很多很多文件来试图弄明白......但我还是不能。任何帮助将不胜感激:)

import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JPanel;  
import javax.swing.JTextField;  

public class TestShape extends JFrame  
{  
    Circle c;  
    Rectangle r;  
    JTextField shapeName;  
    JTextField areaText;  
    String input;  
    String area;  

    public TestShape()
    {

        JPanel jp = new JPanel();

        c = new Circle(65);
        r = new Rectangle(60,80);
        add(r);
        add(c);
        r.setBounds(10, 0, 300,300);
        c.setBounds(250, 0, 300, 300);


        getContentPane().add(jp);
        jp.setLayout(null);

        shapeName = new JTextField("  ");
        shapeName.setBounds(150, 200, 335, 22);
        jp.add(shapeName);
        add(jp);


        areaText = new JTextField();
        areaText.setBounds(150, 222, 335, 22);
        jp.add(areaText);
        add(jp);


        JButton enlarge = new JButton("Enlarge");
        enlarge.setBounds(150, 300, 80, 28);
        jp.add(enlarge);
        add(jp);
        enlarge.addActionListener(new enlargeListener());

        JButton shrink = new JButton("Shrink");
        shrink.setBounds(235, 300, 80, 28);
        jp.add(shrink);
        add(jp);    
        shrink.addActionListener(new shrinkListener()); 
    }


    public static void main(String[] args)
    {
        TestShape test = new TestShape();
        test.setVisible(true);
        test.setSize(500,500);
        test.setLocation(500,100);
        test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }




    class enlargeListener implements ActionListener
    {

        @Override
        public void actionPerformed(ActionEvent arg0)
        {
            input = shapeName.getText().toString();

            if(input == "rectangle")
            {
            r.enlarge();
            //areaText.setText(r.getArea());
            }
            else if (input == "circle")
            {
                c.enlarge();
            }
            else
            {
                System.out.print("cannot do");
            }




        }


    }
    class shrinkListener implements ActionListener
    {

        @Override
        public void actionPerformed(ActionEvent e) 
        {
            if(shapeName.getText() == "rectangle")
            {
            r.shrink();
            }
            else
            {
            c.shrink();
            }

        }

    }   
}

1 个答案:

答案 0 :(得分:1)

这个比较存在一个问题(和其他人一样):

input == "rectangle"

这会比较两个String引用,并且只有在引用指向完全相同的String对象时才会求值为true。为了比较字符串的内容是否相同,请使用equals()方法:

"rectangle".equals(input)

您需要修复所有if语句才能解决此问题。