我想让JTextField记住我以前输入过的数据,不知道能不能实现?如果能,怎么实现?谢谢!

解决方案 »

  1.   

    我想让JTextField有记忆功能,比如:我输入一个帐号,下次我再用这个帐号登陆的时候,不需要我输全部,只输入几个字母就能显示出这个帐号的全部.
      

  2.   

    有人知道吗?帮忙解释一下,我才接触swing,所以很多东西不知道!
      

  3.   


    package cn.bestwiz.jhf.trader.losscut.config;import java.awt.BorderLayout;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.util.HashSet;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.text.BadLocationException;public class Test extends JFrame { private static final long serialVersionUID = 1L; Test(){
    this.setLayout(new BorderLayout());
    this.add(new CacheTextField(),BorderLayout.SOUTH);
    this.add(new JLabel("回车数据存入缓存  , 再次输入会有提示"));
    this.setSize(400,300);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    } public static void main(String[] args) {
    new Test();
    }
    }class CacheTextField extends JTextField implements KeyListener{ private static final long serialVersionUID = 1L;

    HashSet<String> cache = new HashSet<String>();

    CacheTextField(){
    this.addKeyListener(this);
    }

    @Override
    public void keyReleased(KeyEvent e) {

    if(e.getKeyCode() >= KeyEvent.VK_LEFT && e.getKeyCode() <= KeyEvent.VK_DOWN){
    return;
    }

    if(e.getKeyCode() == KeyEvent.VK_BACK_SPACE){
    return;
    }

    if(e.getKeyCode()==KeyEvent.VK_ENTER){
    cache.add(getText().trim());
    setText("");
    }else{
    String str = null;
    try {
    str = this.getText(0, this.getCaretPosition());
    } catch (BadLocationException e2) {
    e2.printStackTrace();
    }

    for(String txt : cache){
    if(txt.length()<=str.length()){
    continue;
    }

    if(txt.substring(0, str.length()).equals(str)){
    int i = this.getCaretPosition();
    this.setText(this.getText()+txt.substring(str.length()));
    this.setCaretPosition(i);
    this.select(i, this.getText().length());

    return;
    }
    }

    }
    } @Override
    public void keyPressed(KeyEvent e) {
    }
    @Override
    public void keyTyped(KeyEvent e) {
    }
    }
    给你写了个例子。 自己看看。 
      

  4.   

    你可以记在ini文件和Text文件中
    当你打开的时候 你把ini文件里或者text里的内容读到JTextField就OK了
    不过楼上的方法也不错