java 无法清空textfield内容 100

importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.lang.Math;impo... import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;
import javax.swing.text.NumberFormatter;
import java.text.NumberFormat;

public class JungleParty extends JFrame implements ActionListener{

public static int correctAnswer = 10;

JLabel questionLabel = new JLabel("How many animals have come to the party?");
JPanel imagePanel = new JPanel();
JLabel[] imageLabel = new JLabel[10] ;
JPanel bottom = new JPanel();
JFormattedTextField textField;

/**
* This is a constructor of JungleFrame,
* used to create the window frame for application.
*/
public JungleParty(){
super("Welcome to the jungle party!");
setSize(750,500);
setLocationRelativeTo(null);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

/**
* This is a method to start displaying and asking.
* No argument and no return type here.
*/
public void ask(){
NumberFormat format = NumberFormat.getInstance();
NumberFormatter formatter = new NumberFormatter(format);
formatter.setValueClass(Integer.class);
formatter.setMinimum(1);
formatter.setMaximum(10);
formatter.setAllowsInvalid(false);
formatter.setCommitsOnValidEdit(true);
textField = new JFormattedTextField(formatter);
textField.setColumns(2);
textField.setMaximumSize(textField.getPreferredSize());
textField.addActionListener(this);

JPanel askPanel = new JPanel();
askPanel.setLayout(new FlowLayout());
askPanel.add(questionLabel);
askPanel.add(textField);
addPic();
无关的
public void actionPerformed(ActionEvent e){
int userNumber = Integer.valueOf(textField.getText()).intValue();
if (userNumber != correctAnswer){//correct answer
questionLabel.setText("Wrong! Try again!");
textField.setText("");
}
else{
correctAnswer = (int)(Math.random()*10 + 1);
questionLabel.setText("Correct! How many animals are in the party now?");
textField.setText("");
imagePanel.removeAll();

for(int i = 0; i <correctAnswer; i++){
imagePanel.add( imageLabel[i]);
}
imagePanel.repaint();
}
}
public static void main(String[] args){
JungleParty myParty = new JungleParty();
myParty.ask();
}
}

我明明在每次getText输入后都写了textField.setText("");
但是一旦输入了数字就再也清空不掉了???
为什么 很急。。求帮助
展开
 我来答
影视后期制作学习
2017-05-26 · 知道合伙人教育行家
影视后期制作学习
知道合伙人教育行家
采纳数:258 获赞数:698
荣获北京智泽苑教育科技有限公司金牌教师称号。

向TA提问 私信TA
展开全部
  1. 最好的方式是用在点击这个界面的时候写一个清空的方法。

  2. 在这个界面添加一个windowListener的事件,在窗体加载后就调用这个方法。

  3. 如果你只用一个船体,不做多次new的处理,也就是说不是点一次就重新new一次,那你就可以在这个船体中重写一下他的setVisible方法,判断他的参数为true的时候就调用那个清空的方法。

  4. 清空数据最好是用setText方法,最简单。望采纳,谢谢。


匿名用户
2017-05-26
展开全部
输入校验的问题。

JFormattedTextField 设置的最小为1, 你设置为空所以不生效了。
追问
那我现在该怎么办 既能输入1-10 又可以清空
追答
用回最初的 JTextField,那样自己在事件中处理内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式