关于TextFeild内容清空问题 在编写GUI调试的过程中,有时候想使用Button对TextField框已经输入的内容进行重置(清除)时,却无法起到作用,点击Button按钮没有任何反应,但是Button的添加的事件没有编译错误。
事例代码:
import java.awt.*;
import java.awt.event.*;
public class Test{
public static void main(String[] agrs){
Frame f = new Frame("It is for test");
// 创建Frame窗口
Panel p = new Panel();
Label l = new Label("用户");
TextField t = new TextField(10);
Button b = new Button("重置");
p.add(l);
p.add(t);
f.add(p);
f.add(b,BorderLayout.SOUTH);
f.setSize(260,100);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
t.setText("");
//设置TextField内容为""。
}
});
}
}
上述代码中的有一个TextField的文本框和一个Button按钮,并且Button按钮已经添加了事件。运行结果如下:
文章图片
向框内输入字符串:root(或者其他字符)
文章图片
此时再点击重置按钮,但如论点多少次都没有作用。
重置按钮添加的事件代码如下:
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
t.setText("");
//设置TextField内容为""。
}
});
事件是按下按钮后调用TextField的setText()方法重置内容填写方法传入的参数为""(两个双引号之间没有任何字符)。
- 猜测:JVM虚拟机与GUI界面临时内存不同步。
即GUI界面输入的内容没有及时同步储存到JVM临时内存中,此时直接setText("")方法传入的参数"“与JVM临时内存中的默认参
数”“相同,所以setText(”"),所以没有起到作用。
- 解决方法:先改变JVM临时内存中的默认参数"",然后再调用setText("")方法重置。
那该怎么改变JVM内存呢?可以先调用getText(""),让JVM虚拟机获取输入的字符串:root (或者其他
字符),这样JVM虚拟机的内存中的默认参数"“已将改变,此时再使用setText(”"),就可以重置成功。
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
t.getText();
t.setText("");
}
});
这样一来就可以重置刚才输入的字符串:root(或者其他字符)。
只要达成改变JVM中虚拟机的内存中TextField的默认字符串"",此时setText("")就可以起到作用。
按照上述理论同样可以这样改写代码:
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
t.setText("任意字符串");
t.setText("");
}
});
- 总结:JVM虚拟机的临时内存与GUI界面的不同步。导致setText("")失效。上述仅使个人观点,如有错误可以向后台回复。若了解更多可以深入了解学习JVM虚拟机。
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)