关于外部类属性访问、键盘事件、文本实时更新的问题

qdwang2010 2010-05-08 10:44:07
我的目的是一个面板中有一个 JTextField 一个JLabel,当在textfield中输入输入数据时,label中的文本从real-time update自动变为keytyped,听起来简单,是则没那么简单,问题我解决了,可错误发生的具体流程我没搞懂,和朋友没切磋一下,最好吧下面两个类粘贴到IDE中,倪们能解释这其中错误的原因吗?

public class Apanel extends Panel{
private JTextField textField=null;
private JLabel label
public Apanel(){
}
initialize(){
this.setLayout(new FlowLayout());
this.add(getTextField());
this.add(getLabel());
}
public JTextField getTextField(){
if(textField == null ){
textField = new JTextField();
textField.addKeyListener(new Handler(this));
}
return textField;
}
public JLabel getLabel(){
label= new JLabel("real-time update");
return label;
}

}
===============================================
public class Handler implements KeyListener{
private Apanel apanel;

public Handler(Apanel apanel){
this.apanel=apanel;
}
public void keyTyped(final KeyEven e){
Thread t= new Thread(){
public void run(){
apanel.getLabel().setText("keytyped");
}
};
t.start();

}
public void keyPressed(){}
public void keyReleased(){}
}
...全文
77 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2010-05-08
  • 打赏
  • 举报
回复
应该使用
jTextField.getDocument().addDocumentListener(new DocumentListener(){
public void changedUpdate(DocumentEvent e) {
label.setText(...);
}

public void insertUpdate(DocumentEvent e) {
label.setText(...);
}

public void removeUpdate(DocumentEvent e) {
label.setText(...);
}


});
wd9053 2010-05-08
  • 打赏
  • 举报
回复
事件响应那里没有必要用线程
public class Handler implements KeyListener{
private Apanel apanel;

public Handler(Apanel apanel){
this.apanel=apanel;
}
public void keyTyped(final KeyEven e){
/* Thread t= new Thread(){
public void run(){
apanel.getLabel().setText("keytyped");
}
};
t.start();
*/
apanel.getLabel().setText("keytyped");
}

public void keyPressed(){}
public void keyReleased(){}
}
wd9053 2010-05-08
  • 打赏
  • 举报
回复
label只是一个指向JLabel对象的引用,label = new JLabel("dsdsds")使label指向了一个新的对象,但添加到panel里的JLabel不会被改变
public class Apanel extends Panel
{
private JTextField textField=null;
private JLabel label = new JLabel("real-time update");////////////

public Apanel()
{
}

initialize()
{
this.setLayout(new FlowLayout());
this.add(getTextField());
this.add(getLabel());
}

public JTextField getTextField()
{
if(textField == null ){
textField = new JTextField();
textField.addKeyListener(new Handler(this));
}
return textField;
}

public JLabel getLabel(){
/////////label= new JLabel("real-time update");
return label;
}
}
内容概要:本文提出了一种基于混沌系统与DNA编码的复合型彩色数字图像加密方案,旨在解决传统加密算法密钥空间小、抗干扰能力弱的问题。该方案利用混沌系统生成伪随机序列,结合DNA碱基编码规则对图像RGB三通道进行像素级置换与混淆扩散,实现高安全性加密;解密过程则通过逆操作精确还原原始图像。文章重点对该方案进行了系统的抗噪声与抗裁剪性能分析,实验结果表明,该算法在面对高斯噪声、椒盐噪声以及不同面积、位置的裁剪攻击时均表现出优良的鲁棒性,能够有效恢复图像核心信息,适用于网络传输与私密存储等复杂环境下的图像安全保护。; 适合人群:具备一定信号处理或信息安全基础知识,从事图像加密、信息隐藏、多媒体安全等相关领域的科研人员及研究生。; 使用场景及目标:①用于提升数字图像在网络传输中的安全性,防止窃听与篡改;②适用于医疗影像、军事测绘、商业机密等对图像安全性和抗干扰性要求较高的应用场景;③为研究高鲁棒性图像加密技术提供理论支持与实验参考。; 阅读建议:建议读者结合Matlab代码实践加密与解密流程,并自行设计不同强度的噪声与裁剪干扰实验,深入理解混沌置乱与DNA编码在提升算法鲁棒性方面的协同机制。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧