JiveJdon Community Forums
在线466人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 3 回复 / 1
 发表新帖子   回复该主题贴
jxb8901

悄悄话
发表文章: 117
注册时间: 2002年10月24日 13:16
Jdk1.4.1新的焦点控制系统的问题: 1.3下的焦点控制代码在1.4.1下运行出现死循环 2002年10月24日 13:36 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
banq:
你好!我是一个Java新手经常访问你的网站受益非浅, 有一问题请教:
以下是我在一个项目中的代码片段, 以前在JDK1.3下开发运行没有问题后来升级到1.4后却出现死循环:

public class tt extends JPanel {
private JTextField txtName = new JTextField();
private JButton jButton1 = new JButton();
private JTextField jTextField1 = new JTextField();

public tt() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
txtName.setText("jTextField1");
jButton1.setText(
"jButton1");
jTextField1.setText(
"jTextField1");
this.add(txtName, null);
this.add(jButton1, null);
this.add(jTextField1, null);

txtName.setInputVerifier(new SellerVerifier());
}
public static void main(String[] args) {
JFrame window = new JFrame(
"test");
tt tt1 = new tt();
window.getContentPane().add(
"Center", tt1);
window.setDefaultCloseOperation(window.EXIT_ON_CLOSE);
window.setSize(300,200);
window.setVisible(true);
}

class SellerVerifier extends InputVerifier {
public boolean verify(JComponent input){
JTextField si = (JTextField)input;
String str = si.getText();
if (str.trim().equalsIgnoreCase(
"")){
JOptionPane.showMessageDialog(null,
"输入不能为空!", "ViTop", JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}
}
}

经跟踪调试后发现: 当我调用JOptionPane.showMessageDialog时,JoptionPane类内部会设置默认控件并为其请求焦点(即调用requestFocus()函数, 而requestFocus在设置焦点以前会让失去焦点的对象先作输入验证。在1.4.1的焦点系统中就是调用上面代码中的txtName的验证代码, 也就出现了死循环。 而在1.3的焦点系统中则不会! 这算不算是JDK的一个Bug呢?
不知banq有没有好的解决法?
banq

悄悄话
发表文章: 9528
注册时间: 2002年08月03日 17:08
Re: Jdk1.4.1新的焦点控制系统的问题: 1.3下的焦点控制代码在1.4.1下运行出现死循环 2002年10月24日 20:21 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
对图形方面研究不够,哪位能出手帮忙
xiaofei

悄悄话
发表文章: 1
注册时间: 2005年01月04日 16:42
Re: Jdk1.4.1新的焦点控制系统的问题: 1.3下的焦点控制代码在1.4.1下运行出现死循环 2005年01月04日 16:48 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
今天也碰到这个问题,改一下:

class SellerVerifier extends InputVerifier {

private boolean tempFocusLost = false;

public boolean verify(JComponent input){

if(tempFocusLost){//for jdk1.4
tempFocusLost = false;
return true;
}

JTextField si = (JTextField)input;
String str = si.getText();
if (str.trim().equalsIgnoreCase(
"")){

tempFocusLost = true;

JOptionPane.showMessageDialog(null,
"输入不能为空!", "ViTop", JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}
}
sumbowlong

悄悄话
发表文章: 1
注册时间: 2005年01月10日 14:42
Re: Jdk1.4.1新的焦点控制系统的问题: 1.3下的焦点控制代码在1.4.1下运行出现死循环 2005年01月10日 14:46 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
我在java5下编译运行过了,java5已经修正了这个bug。
倒是xiaofei给出的方案在java5下会有一点小小的问题。
这个主题有 3 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  每2分种自动备份发贴内容Ctrl-V粘贴取出,提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam