那么这不允许我使用我的按钮或比较字符串?

时间:2013-05-28 22:38:16

标签: java

我的目标是比较两个字符串。一个字符串只是来自文本字段(txt)的用户输入,然后,如果它们匹配,则将文本字段更改为第三个字符串(msg)。

但是,当我输入txt字符串的正确字符并单击按钮时,没有任何反应。为什么不改为“Derk?”,msg字符串?

代码:

package levels;


import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;


public class LevelOne extends JFrame implements ActionListener{

    private JTextField input = new JTextField("Ich spielen Golf.");     
    private JButton submit = new JButton("Check sentence");


    public void one(){

        setTitle("Conjugator");
        setSize(400,400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);


        setLayout(new BorderLayout());
        setContentPane(new JLabel(new ImageIcon("images/LevelOneBG.gif")));
        setLayout(new FlowLayout());

        JTextArea area = new JTextArea("You enter a castle. A Goblin demands you correct his sentences!");
        add(area);
        setVisible(true);

        JButton submit = new JButton("Check sentence");
        submit.addActionListener(this);
        add(submit);
        setVisible(true);
        JTextField input = new JTextField("Ich spielen Golf.");
        input.setActionCommand("input");
        add(input);
        input.addActionListener(this);
        setVisible(true);


    }   


    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == submit) {

            String txt = (input.getText());
            String test = ("test");
            String msg = ("Derk?");

            if (txt.equals(test)){
                //after check
                input.setText(msg); 
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

问题是您在一种方法中重新定义按钮提交。在您的一个方法中删除行

JButton submit = new JButton("Check sentence");

和行

JTextField input = new JTextField("Ich spielen Golf.");

它应该可以正常工作。

答案 1 :(得分:1)

原因是你有两个JTextField和两个JButton。例如,对于JTextfield,您有一个被定义为类的实例变量:

private JTextField input = new JTextField("Ich spielen Golf.");

以及您在one方法中创建的另一个:

JTextField input = new JTextField("Ich spielen Golf.");

只有后者会添加到您的框架中,但您在actionPerformed方法中引用了前者。

解决问题的简便方法:在one方法中删除以下行:

JTextField input = new JTextField("Ich spielen Golf.");
JButton submit = new JButton("Check sentence");