java—actionlistener类是否可以包含其他功能,如驱动程序?

yduiuuwa  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(164)

我的程序中有3个java类,它们使用swinggui向用户显示正确或错误的问题,并向用户提供答案正确与否的对话框。问题和答案在一个文件中。
1.具有main方法的驱动程序类techtest。在这个方法中,它从文件中读取问题并填充问题和答案向量。

public class TechTest {

    static int numberOfQuestions = 0;

    static int questionNum = 0;
    static Vector  questionSet = new Vector();
    static Vector answerSet = new Vector();

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    String questionAnsFileName = readQuestionAnswerFileName();

                    parseQuestionAnswerFile(questionAnsFileName);
                    if (!noFile) {
                        if (!questionSet.isEmpty()) { 
                            View view = new View();
                            System.out.println("run: " + "questionNum " + questionNum); 
                            view.display((String) questionSet.get((questionNum)));

                       }
                       else
                          showErrorDialog("questions are missing. Check the javaQuestionAns.txt file");

                       }
                }
            });

        }
    }

第二类是视图

public class View {
                 /* Shows the Swing GUI. Registers events to event listener class TestEngine */
      .....
      .....

      TestEngine testEngine = new TestEngine(this);

      buttonNext.addActionListener(testEngine);
      answerList.addActionListener(testEngine);

}

第三类是测试引擎。

public class TestEngine implements ActionListener {
/*
     * Check the source of the event, and handle the event accordingly
     * Possible sources are the answerList Combo box or the Next Button
     */
    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == View.answerList) {
          ...
        }
        if (e.getSource() == View.buttonNext ) {
            ...
        }

}

testengine类需要techtest类的许多静态变量。techtest类中定义了许多静态变量。测试引擎类中有对这些静态变量的引用。
这个设计好吗?或者将driver-techtest类的功能合并到测试引擎类本身更好吗?在这个新的设计中,测试引擎将拥有驱动程序的主方法、actionperformed方法(事件处理程序)和其他决定答案正确性和对话框显示的应用程序逻辑。
是否可以将动作侦听器功能与驱动程序功能和其他应用程序逻辑结合起来?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题