[問題] 動態將元件加入panel中,按第二次事件ꄠ…
程式如下:
private void jB_test1ActionPerformed(java.awt.event.ActionEvent evt) { if (jB_test1.getText().equals("出題")) {
score.setText("");//成績重設
jP_op9.removeAll();//清除題目
jB_test1.setText("解答");
ClozeTest();}//出題介面
} else {
jB_test1.setText("出題");
int sum=0;
sum=CheckCloze();
sum=100/num*sum;
score.setText(sum+"");
}
}
private void ClozeTest() {
GridBagConstraints cons = new GridBagConstraints();
jP_op9.setLayout(new java.awt.GridBagLayout());
jL_num1 = new JLabel[num];
jTF_num=new JTextField[num];
for (int i = 0; i <num; i++) {
jTF_num[i]=new JTextField();
jTF_num[i].setPreferredSize(new java.awt.Dimension(100, 20));
jL_num1[i]=new JLabel((i+1)+". "+str);
cons.gridy = i;
cons.gridx = 0;
cons.anchor=cons.NORTHWEST;
jP_op9.add(jTF_num[i], cons);
cons.gridx = 1;
jP_op9.add(jL_num1[i], cons);
}//排版及置入元件
}
private int CheckCloze() {
int sum = 0;
for (int i = 0; i < jTF_num.length; i++) {
String user = jTF_num[i].getText();
try {
if (user.trim().toLowerCase().equals(answer[i].toLowerCase()))
{
jL_num1[i].setText("○" + jL_num1[i].getText());
//在題前加圈表示答對
sum++;
} else {//該題文字為紅色且前面加?且顯示正確答案
jL_num1[i].setText("ㄨ (" + answer[i] + ") " +
jL_num1[i].getText());
jL_num1[i].setForeground(Color.red);
sentencefalsenum.add(SentenceNum[i]);
}
}catch(Exception ex){
JOptionPane.showMessageDialog(this,
"第"+(i+1)+"題輸入格式錯誤");
}
}
return sum;
}
public static JLabel[] jL_num1;
public static JTextField[] jTF_num;
問題:
我的程式按第一次button可以顯示正確的元件,但按了第二次,沒有把前一次的元件
清除掉,可是我有加jP_op9.removeAll();還是不行,如果我的checkcloze()中不要去
設定元件的文字跟顏色,就不會顯示上次的textfield和label,目前是
第一次出題 沒問題
第一次解答 沒問題正常的顏色跟文字
第二次出題 變每一題都有兩個textfield但舊的無法輸入,新的黑色題目蓋了紅色舊
的題目,所以題尾還會顯示紅色的單字
第二次解答 也沒問題
第二次以上就跟第二次狀況一樣,為什麼會這樣呢??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.248.38
※ 編輯: y907372002 來自: 114.47.248.38 (10/04 04:05)
→
10/04 11:59, , 1F
10/04 11:59, 1F
→
10/04 12:00, , 2F
10/04 12:00, 2F