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) { } } 给你写了个例子。 自己看看。
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) {
}
}
给你写了个例子。 自己看看。
当你打开的时候 你把ini文件里或者text里的内容读到JTextField就OK了
不过楼上的方法也不错