我的目标是比较两个字符串。一个字符串只是来自文本字段(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);
}
}
}
}
答案 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");