⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blankfillitemdisplay.java

📁 支持GUI和持久对象的联机测试系统
💻 JAVA
字号:
/*
 * BlankFillItemDisplay.java
 * 
 * MSE06B班张智力的实验报告
 * 
 * 2006年12月10日
 */

package olts.display;

import javax.swing.*;
import olts.AnswerSheet;
import java.awt.GridLayout;

/**
 * BlankFillItemDisplay类,继承了JPanel,生成显示填空题的JPanel
 */
public class BlankFillItemDisplay extends JPanel {

	/**
	 * jLabel,用于显示试题的题目
	 */
	private JLabel jLabel = null;
	
	/**
	 * jTextField,用于接受用户填写的答案
	 */
	private JTextField jTextField = null;
	
	/**
	 * parent,记录本JPanel所在的frame父容器,方便回调父容器中的响应代码。
	 */
    private MainFrame parent;
    
    /**
     * answerSheet对象,该Display的数据模型
     */
	private AnswerSheet answerSheet;
	
	/**
	 * BlankFillItemDisplay类的构造函数
	 * @param answerSheet Display类的数据模型
	 * @param mf Display类的frame父容器
	 */
	public BlankFillItemDisplay(AnswerSheet answerSheet, MainFrame mf) {
		super();
		this.answerSheet = answerSheet;
        this.parent = mf;
		initialize();
	}
		
	/**
	 * initializes方法,构造函数调用该方法初始化UI组件
	 */
	private void initialize() {
		
		jLabel = new JLabel();
		jLabel.setText(this.answerSheet.getTestId() + "." + this.answerSheet.getItem().content + "(" + this.answerSheet.getItem().score + "分)");
		GridLayout gridLayout = new GridLayout();
		gridLayout.setRows(2);
		gridLayout.setColumns(1);
		this.setLayout(gridLayout);
		this.setSize(400, 80);
		this.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));
		this.add(jLabel, null);
		this.add(getJTextField(), null);
	}
	
	/**
	 * getJTextField方法,返回一个JTextField对象,并在其中注册了listener,一但用户输入数据引发事件,
	 * 用户输入的结果将被保存到answerSheet中,以便以后批改用
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.addCaretListener(new javax.swing.event.CaretListener() {   
				public void caretUpdate(javax.swing.event.CaretEvent e) {    
					answerSheet.setAnswer(jTextField.getText());
                    answerResponse(answerSheet.getTestId(), answerSheet.getAnswer()); //调用父容器的响应方法,修改父容器中某些组件的值
				}
			});
		}
		return jTextField;
	}

	/**
	 * setAnswer方法,用户的输入存放到answerSheet中
	 */
	private void setAnswer(){
		this.answerSheet.setAnswer(jTextField.getText());
	}

	/**
	 * 调用frame父容器上的响应方法,修改父容器上的某些组件的值和外观
	 * @param i 试题号
	 * @param s 用户答案
	 */
    private void answerResponse(int i, String s){
        parent.answerResponse(i, s);
    }
	
}  //  @jve:decl-index=0:visual-constraint="10,10"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -