有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java禁用按钮,并在ArrayList迭代结束时在文本字段中显示消息

我正在写一个测验程序,它会打开一个包含问题和答案的文本文件。问题和答案被放入数组中,并在点击按钮时放入文本字段。打开文件将启用Q按钮

页面底部的计数器显示文件中的问题总数,以及每个问题的计数

当你点击“Q”按钮时,问题被放置在Q文本字段中,Q按钮被禁用,回答按钮(“A”)被启用,“currentQuestion”计数器上升1。单击A按钮时,答案显示在“答案”字段中,A按钮被禁用,Q按钮被启用。再次按下Q按钮将清除上一个问题的答案文本,启用A按钮,并禁用其自身。它像这样来回移动,直到到达arraylist中的最后一个问题和答案

在显示最后一个问题和答案后,我需要能够再次按下Q按钮并显示文本“这就是所有人!”在问题文本字段中,同时禁用Q和A按钮

我已经设法使用一个方法getEndStatus()(这个布尔方法是作业的一个要求)来检查最后一个问题是否已经解决。我可以用它把文本放在问题文本字段中。然而,我似乎不知道如何禁用这两个按钮。我在Q button click上尝试了表单源代码中的一个if语句(也尝试了一个button click),在getEndStatus()方法返回true时禁用按钮,但在生成最终消息的最后一次单击之前禁用按钮

我还需要让对JFileChooser的每次后续调用都从上次用于查找文件的同一文件夹开始。我不知道该怎么做

非常感谢您的帮助!提前谢谢

下面是类构造函数的源代码:

package business;

import java.io.*;
import java.util.ArrayList;

public class Quiz {
private ArrayList<String> questions, answers;
private int qCount, qNumber;
private String errmsg, actmsg;

public Quiz(String fn){
    //fn = file name with full path
    this.qCount = 0;
    this.qNumber = 0;
    this.errmsg = "";
    this.actmsg = "";
    try{
        BufferedReader in = new BufferedReader(
                new FileReader(fn));
        questions = new ArrayList<String>();
        answers = new ArrayList<String>();

        String s = in.readLine();
        while (s != null){
            qCount++;
            questions.add(s); //put question in array list
            answers.add(in.readLine()); //read and post answer
            s = in.readLine(); //next question
        }//end while loop
        in.close();
    }catch (Exception e){
        errmsg = "Error opening file: " + e.getMessage();
    }//end try catch
    if (qCount > 0){
        qNumber =1;          
        actmsg = "Quiz file read. Next number = " + qNumber;
    }//end if statement
}//end of constructor

public int getQuizCount(){
    return this.qCount;
}//end getQuizCount()

public String getActionResult(){
    if (qNumber < qCount){
    actmsg = "Quiz file read. Next number = " + qNumber;
    }else if(getEndStatus()){
        actmsg = "That's all Folks!";
    }else{
    actmsg = "Quiz file read. Next number = " + qCount;
    }
    return this.actmsg;
}//end getActionResult()

public String getErrorMsg(){
    return this.errmsg;
}//end getErrorMsg()

public String getQuestion(){
    if (qNumber == 0){
        return "No Questions on File.";
    }else if(getEndStatus()){
        return "That's All Folks!";
    }else{    
    qNumber++;
    return this.questions.get(qNumber-2);
    }
}//end getQuestion()

public String getAnswer(){
    if(qNumber == 0){
        return "No Answers on File.";
    }
    return this.answers.get(qNumber-2); 
}

public int getCurrCount(){
    return qNumber-1;
}

public boolean getEndStatus(){
    if(qNumber <= qCount){
        return false;
    }
    return true;
}
}//end class()

以下是表单视图中的相关源代码:

private void jmnuOpenActionPerformed(java.awt.event.ActionEvent evt) {                                         
statusMessageLabel.setText("");

JFileChooser f = new JFileChooser(".");
f.setDialogTitle("Select Quiz File");
FileNameExtensionFilter filter = 
        new FileNameExtensionFilter("Text Files (*.txt)","txt");
f.setFileFilter(filter);
JDialog dg = new JDialog();
int rval = f.showOpenDialog(dg);

if (rval == JFileChooser.CANCEL_OPTION){
    jtxtFile.setText("");
    statusMessageLabel.setText("Open Canceled.");
}else {
    jtxtFile.setText(f.getSelectedFile().getAbsolutePath());
    q = new Quiz(f.getSelectedFile().getAbsolutePath());
    if (q.getErrorMsg().isEmpty()){
        jtxtTotQ.setText(String.valueOf(q.getQuizCount()));
        jbtnQ.setEnabled(true);
        statusMessageLabel.setText(q.getActionResult());
    }else{
        statusMessageLabel.setText(q.getErrorMsg());
        jtxtTotQ.setText("");
        jtxtCurrQ.setText("");
    }//end if else    
}//end if else 
jtxtQ.setText("");
jtxtA.setText("");
}

private void jbtnQActionPerformed(java.awt.event.ActionEvent evt) {                                      
jtxtQ.setText(q.getQuestion());
jtxtCurrQ.setText(String.valueOf(q.getCurrCount()));
statusMessageLabel.setText(q.getActionResult());
jtxtA.setText("");
jbtnQ.setEnabled(false);
if (q.getEndStatus()){
    jbtnA.setEnabled(false);
}else{
    jbtnA.setEnabled(true);
}
}                                     

private void jbtnAActionPerformed(java.awt.event.ActionEvent evt) {                                      
jtxtA.setText(q.getAnswer());
jbtnA.setEnabled(false);
jbtnQ.setEnabled(true);
}                                                     

共 (0) 个答案