import java.awt.*;
import javax.swing.*;import java.awt.event.*;
import java.util.EventObject;public class texttest {
public static void main(String args[]){
new frame();
frame f = new frame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setSize(60, 100);
f.setBounds(500,500,500,100);
}
}class frame extends JFrame{
public frame(){
panel p= new panel();
Container c = getContentPane();
c.add(p,BorderLayout.EAST);}
}class panel extends JPanel{
public panel(){
JTextField text = new JTextField();
add(text);
text.setColumns(50);
text.addActionListener(new action());
text.setEchoChar('*');
}
}class action implements ActionListener{
public void actionPerformed(ActionEvent e){
JTextField text=(JTextField)e.getSource();
System.out.println(text.getText());
text.setText(" ");
}
}
我想在textfield输入时显示星号,但弄不好,text.setEchoChar('*');,但会报错
另外界面默认的布局是显示不到textfield的,需要手动拖动下上边框,请问如何解决呢?

解决方案 »

  1.   

    你把密码列设短点不就行了?
    要不你把窗口放大些不就行了?
    import   java.awt.*; 
    import   javax.swing.*; 
    import   java.awt.event.*; 
    import   java.util.EventObject; public   class   TextTest   { 
    public   static   void   main(String   args[]){ 
    new   PasswordJFrame(); 
    PasswordJFrame   f   =   new   PasswordJFrame(); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
    f.setSize(60,   500); 
    f.setBounds(500,500,500,100); 

    } class   PasswordJFrame   extends   JFrame{ 
    public   PasswordJFrame(){ 
    PasswordJPanel   p=   new   PasswordJPanel(); 
    Container   c   =   getContentPane(); 
    c.add(p,BorderLayout.EAST); 

    } class   PasswordJPanel   extends   JPanel{ 
    public   PasswordJPanel(){ 
    JPasswordField   text   =   new   JPasswordField(); 
    add(new JLabel("请输入密码"));
    add(text); 
    text.setColumns(10); 
    text.addActionListener(new   Action()); 

    } class   Action   implements   ActionListener{ 
    public   void   actionPerformed(ActionEvent   e){ 
    JTextField   text=(JTextField)e.getSource(); 
    System.out.println(text.getText()); 
    text.setText("");