0

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

但是,当我为 txt 字符串输入正确的字符并单击按钮时,什么也没有发生。为什么它不更改为“Derk?”,味精字符串?

代码:

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

2 回答 2

2

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

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

和线

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

它应该可以正常工作。

于 2013-05-28T22:43:27.263 回答
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");
于 2013-05-28T22:43:35.267 回答