我有一個JSwing應用程序詢問用戶一個問題,回答這個問題,然後問另一個問題。我的問題是,在回答第一個問題之後,出現第二個問題(來自actionPerformed方法),而下一個方法(檢查方法)需要將新答案分配給響應變量並開始if語句,似乎沒有初始化。這裏是完整的代碼:正在初始化另一個方法
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");
}
}
}
任何建議將不勝感激。
這似乎不起作用。同樣的事情正在發生,顯示問題的地方,並且對用戶答案的迴應永遠不會出現。它只是繼續替換爲JTextField輸入的內容爲「你好嗎」+ answers.getText()... – guarrana
你描述的內容聽起來不太可能:如果你只輸入了一次'actionPerformed',那麼'current'就變成'SECOND',並且它不能再次將文本重置爲「你好嗎......」。除非你有'current = FIRST'的地方繼續被叫。 – itchy23
經過一番擺弄之後,它似乎在工作。謝謝 – guarrana