java 问题:为什么我的这个程序不能实现在密码框中输入的能在文本框出现?
packageshiyan;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclass...
package shiyan;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Yue2 extends JFrame implements ActionListener {
JPanel jp1,jp2;
JPasswordField jpf;
JTextField jtf;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Yue2 shi=new Yue2("woshi");
}
Yue2(String s){
super(s);
Container con=this.getContentPane();
jp1=new JPanel();
jp2=new JPanel();
jpf=new JPasswordField(10);
jtf=new JTextField(10);
jpf.addActionListener(this);
con.setLayout(new GridLayout(2,1,10,10));
jp1.add(jpf);
jp2.add(jtf);
con.add(jp1);
con.add(jp2);
con.validate();
this.setBounds(500,200,400,350);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
char a[]=jpf.getPassword();
jtf.setText(new String(a));
}
} 展开
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Yue2 extends JFrame implements ActionListener {
JPanel jp1,jp2;
JPasswordField jpf;
JTextField jtf;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Yue2 shi=new Yue2("woshi");
}
Yue2(String s){
super(s);
Container con=this.getContentPane();
jp1=new JPanel();
jp2=new JPanel();
jpf=new JPasswordField(10);
jtf=new JTextField(10);
jpf.addActionListener(this);
con.setLayout(new GridLayout(2,1,10,10));
jp1.add(jpf);
jp2.add(jtf);
con.add(jp1);
con.add(jp2);
con.validate();
this.setBounds(500,200,400,350);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
char a[]=jpf.getPassword();
jtf.setText(new String(a));
}
} 展开
2个回答
展开全部
addActionListener(监视器); 对于获取监视器的文本,当文本框获得输入焦点之后,需按enter建此时java系统就自动用ActionEvent 方法创建一对象,事件获得监视器后,相应的操作才会发生,并通知监视器,监视器就会做出相应的处理。我调试了一下可以
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Yue2 extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
JPanel jp1,jp2;
JPasswordField jpf;
JTextField jtf;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Yue2 shi=new Yue2("woshi");
}
Yue2(String s){
super(s);
Container con=this.getContentPane();
jp1=new JPanel();
jp2=new JPanel();
jpf=new JPasswordField(10);
jtf=new JTextField(10);
jpf.addActionListener(this);
con.setLayout(new GridLayout(2,1,10,10));
jp1.add(jpf);
jp2.add(jtf);
con.add(jp1);
con.add(jp2);
con.validate();
this.setBounds(500,200,400,350);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
}
public void actionPerformed(ActionEvent e)
{
char a[]=jpf.getPassword();
jtf.setText(new String(a));
}
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Yue2 extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
JPanel jp1,jp2;
JPasswordField jpf;
JTextField jtf;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Yue2 shi=new Yue2("woshi");
}
Yue2(String s){
super(s);
Container con=this.getContentPane();
jp1=new JPanel();
jp2=new JPanel();
jpf=new JPasswordField(10);
jtf=new JTextField(10);
jpf.addActionListener(this);
con.setLayout(new GridLayout(2,1,10,10));
jp1.add(jpf);
jp2.add(jtf);
con.add(jp1);
con.add(jp2);
con.validate();
this.setBounds(500,200,400,350);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
}
public void actionPerformed(ActionEvent e)
{
char a[]=jpf.getPassword();
jtf.setText(new String(a));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你监听事件错了,不是ActionListener(表示的是按钮单击事件,而你题目中没有按钮,并且你题目要实现的也不是单击事件监听)而是KeyListener(键盘监听)。
在把char a[]=jpf.getPassword();
jtf.setText(new String(a));
这些语句public void keyPressed(KeyEvent e)方法中就能实现你要的效果。
在把char a[]=jpf.getPassword();
jtf.setText(new String(a));
这些语句public void keyPressed(KeyEvent e)方法中就能实现你要的效果。
追问
我试了一下 不过出现一个问题:每当我在密码框输入第一个数时,文本框是不显示的,然而我输入第二个数后,文本框就显示我在密码框输入的第一个数,依次下去,文本框总是比密码框少一个数!!这又是咋回事????求解????
追答
不好意思,因为我之前没有试。
用CaretListener这个监听就可以了,在把char a[]=jpf.getPassword();
jtf.setText(new String(a));
这些语句public void caretUpdate(CaretEvent e)方法中就能实现你要的效果。
KeyListener接口是按键接口,也就是对某一个键盘按键进行响应,而CaretListener这是对若干个键盘按键进行响应。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询