我的目的是一个面板中有一个 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(){}
}
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(){}
}
解决方案 »
- JSplitPane设置成纵向之后,如何固定下面的大小?
- 关于 setLayout(null) object.setBounds(x,y,widht,hieght)
- 如何给Frame添加一个背景图片
- 下一步我该学Java什么开发工具?
- 菜鸟请教:applet如何执行服务器上的exe,如何下载服务器上的文件
- 为什么jtextpane的getHeight()方法返回的高度一直不变.?
- 求解释25~32行代码,size是多少?
- 帮忙提供一个通过socket发送文件的例子,谢谢!!只有60分拉。。
- 如何比较两个文件的差别,高分相送,如有源程序可给Money!!!
- 请教一个远程数据库连接的问题(请大侠指教)我的68分送给你了
- 查阅API有没有什么技巧啊?
- HelloWorld java小程序能编译但不能运行,请各位指教。
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;
}
}
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(){}
}
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(...);
}
});