📄 blankfillitemdisplay.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 + -