gpt4 book ai didi

java - 初始化另一个方法

转载 作者:行者123 更新时间:2023-11-29 05:32:54 25 4
gpt4 key购买 nike

我有一个 JSwing 应用程序,它向用户询问一个问题,回答该问题,然后再询问另一个问题。我的问题是,在回答完第一个问题后,出现了第二个问题(来自 actionPerformed 方法),但是下一个方法(checker 方法)需要将新答案分配给响应变量并开始 if else 语句,似乎没有初始化。这是完整的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;

public class hello extends JApplet implements ActionListener{
JTextArea questions;
JTextField answers;
JPanel panel;
String response;

public void init(){

questions = new JTextArea("Hello. State your name: ", 15, 65);
questions.setEditable(false);
questions.setLineWrap(true);
questions.setWrapStyleWord(true);
questions.setBackground(Color.black);
questions.setForeground(Color.green);
questions.setFont(new Font("Monaco", Font.PLAIN, 12));

answers = new JTextField("Type here", 65);
answers.setBackground(Color.black);
answers.setForeground(Color.green);
answers.setFont(new Font("Monaco", Font.PLAIN, 12));
answers.addActionListener(this);

panel = new JPanel();
panel.add(questions);
panel.add(answers);
panel.setSize(480, 280);
panel.setBackground(Color.black);

getContentPane().add(panel, BorderLayout.CENTER);

answers.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
answers.setText("");
}
});

}
public void actionPerformed(ActionEvent e){
response = answers.getText();
questions.setText("How are you " + response + "?");
answers.setText("");
}
public void checker(ActionEvent f){
response = answers.getText();
if(response.equals("well")){
questions.setText("glad to hear it");
}
else{
questions.setText("i'm sorry to hear that");
}
}
}

如有任何建议,我们将不胜感激。

最佳答案

您似乎对如何调用 actionPerformed 感到困惑,并创建了一个从未真正调用过的 checker 方法。

您已经注册了hello 类来实现ActionListener 接口(interface)。
也就是说,通过在您的 JTextField 上调用 setActionListener(this),当用户按下 enter 时将调用 actionPerformed

例如,我假设您希望用户在输入“well”后再次按回车键,然后将调用 checker。但是,您的 JTextField 无法识别 checker,也没有兴趣调用它。
您可以检查用户是否在您的 actionPerformed 方法中回答了第二个问题;甚至可能创建一个枚举来检查当前问题的状态。

所以像这样:

private enum Question { FIRST, SECOND };
private Question current = FIRST; //can also initiate (but not declare) in init()
...
public void actionPerformed(ActionEvent e) {
if(current == FIRST) {
questions.setText("How are you " + answers.getText() + "?");
answers.setText("");
current = SECOND;
} else if(current == SECOND) {
if(answers.getText().equals("well"))
questions.setText("glad to hear it");
else
questions.setText("i'm sorry to hear that");
}
}

关于java - 初始化另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20508014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com