从JTEXT字段中获取输入

  • 本文关键字:获取 JTEXT 字段 java
  • 更新时间 :
  • 英文 :


我正在尝试使'frarargelistener实现actionlistener'类,以从shapename jtextfield中获取输入,并将其应用于for for循环。规格是,如果从shapename.getText()返回的内容,则从shapename jtextfield匹配循环中指定的内容(aka =="矩形"或==" circle"),它将实现放大器或收缩方法。

问题是我知道它返回了jtextfield中的内容...但是即使它符合循环的资格。.循环仍然失败,我不知道为什么。

例如..如果我将"矩形"键入第一个文本框...它将返回" extrargelistener''class'类作为字符串"矩形"的for循环。但是,当它针对=="矩形"进行测试时,它仍然失败。我已经梳理了许多文档来试图弄清楚这一点...但是我仍然不能。任何帮助将不胜感激:)

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

一个问题是与此比较(以及其他类似的比较):

input == "rectangle"

这将比较两个字符串引用,并且只有当引用指向完全相同的字符串对象时,才能评估为true。为了比较字符串的内容相同,请使用equals()方法:

"rectangle".equals(input)

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

最新更新