加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Java实现自动补全提示的文本框

(2012-10-09 13:29:28)
标签:

杂谈

    使用自定义的文本框控件,从数据库中读取值对输入内容自动提示。
1.ListPopup类:
  1. import java.awt.BorderLayout;   
  2. import java.awt.Color;   
  3. import java.awt.Point;   
  4. import java.awt.Rectangle;   
  5. import java.awt.event.MouseEvent;   
  6. import java.util.ArrayList;   
  7. import java.util.Enumeration;   
  8. import javax.swing.BorderFactory;   
  9. import javax.swing.DefaultListModel;   
  10. import javax.swing.JList;   
  11. import javax.swing.JPopupMenu;   
  12. import javax.swing.JScrollPane;   
  13. import javax.swing.ListSelectionModel;   
  14. import javax.swing.event.ListSelectionEvent;   
  15. import javax.swing.event.ListSelectionListener;   
  16. import javax.swing.event.MouseInputListener;   
  17.   
  18.   
  19. public class ListPopup extends JPopupMenu implements MouseInputListener {   
  20.        
  21.     private JList list;   
  22.     private JScrollPane pane;   
  23.     private ArrayList listeners=new ArrayList();   
  24.     public void addListSelectionListener(ListSelectionListener l){   
  25.         if(!listeners.contains(l))   
  26.             listeners.add(l);   
  27.     }   
  28.     public void setSelectedIndex(int index){   
  29.         if(index>=list.getModel().getSize())   
  30.             index=0;   
  31.         if(index<</SPAN>0)   
  32.             index=list.getModel().getSize()-1;   
  33.         list.ensureIndexIsVisible(index);   
  34.         list.setSelectedIndex(index);   
  35.     }   
  36.     public Object getSelectedValue(){   
  37.         return list.getSelectedValue();   
  38.     }   
  39.     public int getSelectedIndex(){   
  40.         return list.getSelectedIndex();   
  41.     }   
  42.     public boolean isSelected(){   
  43.         return list.getSelectedIndex()!=-1;   
  44.     }   
  45.     public void setLastOneSelected(){   
  46.         int count=list.getModel().getSize();   
  47.         if(count>0){   
  48.             list.ensureIndexIsVisible(count-1);   
  49.             list.setSelectedIndex(count-1);   
  50.         }   
  51.     }   
  52.     public void removeListSelectionListener(ListSelectionListener l){   
  53.         if(listeners.contains(l))   
  54.             listeners.remove(l);   
  55.     }   
  56.     private void fireValueChanged(ListSelectionEvent e){   
  57.         for(ListSelectionListener l:listeners){   
  58.             l.valueChanged(e);   
  59.         }   
  60.     }   
  61.     public ListPopup() {   
  62.         setLayout(new BorderLayout());   
  63.         list new JList();   
  64.         list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);   
  65.         list.addMouseListener(this);   
  66.         list.addMouseMotionListener(this);   
  67.         list.setModel(new DefaultListModel());   
  68.         pane new JScrollPane(list);   
  69.         pane.setBorder(null);   
  70.         add(pane, BorderLayout.CENTER);   
  71.     }   
  72.        
  73.     public int getItemCount() {   
  74.         DefaultListModel model (DefaultListModel) list.getModel();   
  75.         return model.getSize();   
  76.     }   
  77.        
  78.     public Object getItem(int index) {   
  79.         DefaultListModel model (DefaultListModel) list.getModel();   
  80.         return model.get(index);   
  81.     }   
  82.        
  83.     public void addItem(Object o) {   
  84.         DefaultListModel model (DefaultListModel) list.getModel();   
  85.         model.addElement(o);   
  86.         list.repaint();   
  87.     }   
  88.        
  89.     public void removeItem(Object o) {   
  90.         DefaultListModel model (DefaultListModel) list.getModel();   
  91.         model.removeElement(o);   
  92.         list.repaint();   
  93.     }   
  94.        
  95.     public void setList(Iterable iterable) {   
  96.         DefaultListModel model new DefaultListModel();   
  97.         for (Object iterable) {   
  98.             model.addElement(o);   
  99.         }   
  100.         list.setModel(model);   
  101.         list.repaint();   
  102.     }   
  103.        
  104.     public void setList(Enumeration e) {   
  105.         DefaultListModel model new DefaultListModel();   
  106.         while (e.hasMoreElements()) {   
  107.             model.addElement(e.nextElement());   
  108.         }   
  109.         list.setModel(model);   
  110.         list.repaint();   
  111.     }   
  112.        
  113.     public void setList(Object... objects) {   
  114.         DefaultListModel model new DefaultListModel();   
  115.         for (Object objects) {   
  116.             model.addElement(o);   
  117.         }   
  118.         list.setModel(model);   
  119.         list.repaint();   
  120.     }   
  121.        
  122.   
  123.     public void mouseClicked(MouseEvent e) {   
  124.     }   
  125.        
  126.     public void mousePressed(MouseEvent e) {   
  127.         if(list.getSelectedIndex()!=-1)   
  128.             fireValueChanged(new ListSelectionEvent(list, list.getSelectedIndex(), list.getSelectedIndex(), true));   
  129.     }   
  130.        
  131.     public void mouseReleased(MouseEvent e) {   
  132.     }   
  133.        
  134.     public void mouseEntered(MouseEvent e) {   
  135.     }   
  136.        
  137.     public void mouseExited(MouseEvent e) {   
  138.     }   
  139.   
  140.     public void mouseMoved(MouseEvent anEvent) {   
  141.         if (anEvent.getSource() == list) {   
  142.             Point location anEvent.getPoint();   
  143.             Rectangle new Rectangle();   
  144.             list.computeVisibleRect(r);   
  145.             if (r.contains(location)) {   
  146.                 updateListBoxSelectionForEvent(anEvent, false);   
  147.             }   
  148.         }   
  149.     }   
  150.        
  151.     protected void updateListBoxSelectionForEvent(MouseEvent anEvent, boolean shouldScroll) {   
  152.   
  153.         Point location anEvent.getPoint();   
  154.         if (list == null{   
  155.             return;   
  156.         }   
  157.         int index list.locationToIndex(location);   
  158.         if (index == -1{   
  159.             if (location.y 0{   
  160.                 index 0;   
  161.             else {   
  162.                 index list.getModel().getSize() 1;   
  163.             }   
  164.         }   
  165.         if (list.getSelectedIndex() != index) {   
  166.             list.setSelectedIndex(index);   
  167.             if (shouldScroll) {   
  168.                 list.ensureIndexIsVisible(index);   
  169.             }   
  170.         }   
  171.     }   
  172.        
  173.     public void mouseDragged(MouseEvent e) {   
  174.     }   
  175.  
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Enumeration;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.MouseInputListener;


public class ListPopup extends JPopupMenu implements MouseInputListener {
    
    private JList list;
    private JScrollPane pane;
    private ArrayList listeners=new ArrayList();
    public void addListSelectionListener(ListSelectionListener l){
        if(!listeners.contains(l))
            listeners.add(l);
    }
    public void setSelectedIndex(int index){
        if(index>=list.getModel().getSize())
            index=0;
        if(index<0)
            index=list.getModel().getSize()-1;
        list.ensureIndexIsVisible(index);
        list.setSelectedIndex(index);
    }
    public Object getSelectedValue(){
        return list.getSelectedValue();
    }
    public int getSelectedIndex(){
        return list.getSelectedIndex();
    }
    public boolean isSelected(){
        return list.getSelectedIndex()!=-1;
    }
    public void setLastOneSelected(){
        int count=list.getModel().getSize();
        if(count>0){
            list.ensureIndexIsVisible(count-1);
            list.setSelectedIndex(count-1);
        }
    }
    public void removeListSelectionListener(ListSelectionListener l){
        if(listeners.contains(l))
            listeners.remove(l);
    }
    private void fireValueChanged(ListSelectionEvent e){
        for(ListSelectionListener l:listeners){
            l.valueChanged(e);
        }
    }
    public ListPopup() {
        setLayout(new BorderLayout());
        list = new JList();
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.addMouseListener(this);
        list.addMouseMotionListener(this);
        list.setModel(new DefaultListModel());
        pane = new JScrollPane(list);
        pane.setBorder(null);
        add(pane, BorderLayout.CENTER);
    }
    
    public int getItemCount() {
        DefaultListModel model = (DefaultListModel) list.getModel();
        return model.getSize();
    }
    
    public Object getItem(int index) {
        DefaultListModel model = (DefaultListModel) list.getModel();
        return model.get(index);
    }
    
    public void addItem(Object o) {
        DefaultListModel model = (DefaultListModel) list.getModel();
        model.addElement(o);
        list.repaint();
    }
    
    public void removeItem(Object o) {
        DefaultListModel model = (DefaultListModel) list.getModel();
        model.removeElement(o);
        list.repaint();
    }
    
    public void setList(Iterable iterable) {
        DefaultListModel model = new DefaultListModel();
        for (Object o : iterable) {
            model.addElement(o);
        }
        list.setModel(model);
        list.repaint();
    }
    
    public void setList(Enumeration e) {
        DefaultListModel model = new DefaultListModel();
        while (e.hasMoreElements()) {
            model.addElement(e.nextElement());
        }
        list.setModel(model);
        list.repaint();
    }
    
    public void setList(Object... objects) {
        DefaultListModel model = new DefaultListModel();
        for (Object o : objects) {
            model.addElement(o);
        }
        list.setModel(model);
        list.repaint();
    }
    

    public void mouseClicked(MouseEvent e) {
    }
    
    public void mousePressed(MouseEvent e) {
        if(list.getSelectedIndex()!=-1)
            fireValueChanged(new ListSelectionEvent(list, list.getSelectedIndex(), list.getSelectedIndex(), true));
    }
    
    public void mouseReleased(MouseEvent e) {
    }
    
    public void mouseEntered(MouseEvent e) {
    }
    
    public void mouseExited(MouseEvent e) {
    }

    public void mouseMoved(MouseEvent anEvent) {
        if (anEvent.getSource() == list) {
            Point location = anEvent.getPoint();
            Rectangle r = new Rectangle();
            list.computeVisibleRect(r);
            if (r.contains(location)) {
                updateListBoxSelectionForEvent(anEvent, false);
            }
        }
    }
    
    protected void updateListBoxSelectionForEvent(MouseEvent anEvent, boolean shouldScroll) {

        Point location = anEvent.getPoint();
        if (list == null) {
            return;
        }
        int index = list.locationToIndex(location);
        if (index == -1) {
            if (location.y < 0) {
                index = 0;
            } else {
                index = list.getModel().getSize() - 1;
            }
        }
        if (list.getSelectedIndex() != index) {
            list.setSelectedIndex(index);
            if (shouldScroll) {
                list.ensureIndexIsVisible(index);
            }
        }
    }
    
    public void mouseDragged(MouseEvent e) {
    }
}


2.AutoCompletionField类:
  1. import java.awt.event.ActionEvent;   
  2. import java.awt.event.ActionListener;   
  3. import java.awt.event.KeyEvent;   
  4. import java.awt.event.KeyListener;   
  5. import java.awt.event.MouseEvent;   
  6. import java.awt.event.MouseListener;   
  7. import java.util.ArrayList;   
  8. import javax.swing.JList;   
  9. import javax.swing.JTextField;   
  10. import javax.swing.event.DocumentEvent;   
  11. import javax.swing.event.DocumentListener;   
  12. import javax.swing.event.ListSelectionEvent;   
  13. import javax.swing.event.ListSelectionListener;   
  14.   
  15. public class AutoCompletionField extends JTextField implements DocumentListener, MouseListener, ListSelectionListener, ActionListener, KeyListener {   
  16.        
  17.     private static int DEFAULT_PREFERRED_HEIGHT 100;   
  18.     private ListPopup popup;   
  19.     private int preferredHeight DEFAULT_PREFERRED_HEIGHT;   
  20.     private CompletionFilter filter;   
  21.        
  22.     public void setFilter(CompletionFilter f) {   
  23.         filter f;   
  24.     }   
  25.        
  26.     public AutoCompletionField() {   
  27.         popup new ListPopup();   
  28.         getDocument().addDocumentListener(this);   
  29.         addMouseListener(this);   
  30.         popup.addListSelectionListener(this);   
  31.         addActionListener(this);   
  32.         addKeyListener(this);   
  33.     }   
  34.        
  35.     public void setPopupPreferredHeight(int h) {   
  36.         preferredHeight h;   
  37.     }   
  38.        
  39.     private boolean isListChange(ArrayList array) {   
  40.         if (array.size() != popup.getItemCount()) {   
  41.             return true;   
  42.         }   
  43.         for (int 0array.size(); i++) {   
  44.             if (!array.get(i).equals(popup.getItem(i))) {   
  45.                 return true;   
  46.             }   
  47.         }   
  48.         return false;   
  49.     }   
  50.        
  51.     private void textChanged() {   
  52.         if ("".equals(this.getText()))   
  53.             popup.setVisible(false);   
  54.         else {   
  55.             if (!popup.isVisible()) {   
  56.                 showPopup();   
  57.                 requestFocus();   
  58.             }   
  59.             if (filter != null{   
  60.                 ArrayList array filter.filter(getText());   
  61.                 changeList(array);   
  62.             }   
  63.   
  64.         }   
  65.   
  66.     }   
  67.        
  68.     private void showPopup() {   
  69.         popup.setPopupSize(getWidth(), preferredHeight);   
  70.         popup.show(this0getHeight()-1);   
  71.     }   
  72.        
  73.     private void changeList(ArrayList array) {   
  74.         if (array.size() == 0{   
  75.             if (popup.isVisible()) {   
  76.                 popup.setVisible(false);   
  77.             }   
  78.         else {   
  79.             if (!popup.isVisible()) {   
  80.                 showPopup();   
  81.             }   
  82.         }   
  83.         if (isListChange(array)&&array.size()!=0{   
  84.             popup.setList(array);   
  85.         }   
  86.     }   
  87.        
  88.     public void insertUpdate(DocumentEvent e) {   
  89.         textChanged();   
  90.     }   
  91.        
  92.     public void removeUpdate(DocumentEvent e) {   
  93.         textChanged();   
  94.     }   
  95.        
  96.     public void changedUpdate(DocumentEvent e) {   
  97.         textChanged();   
  98.     }   
  99.        
  100.     public void mouseClicked(MouseEvent e) {   
  101.         if(e.getClickCount()>1 && !popup.isVisible())   
  102.             textChanged();   
  103.     }   
  104.        
  105.     public void mousePressed(MouseEvent e) {   
  106.     }   
  107.        
  108.     public void mouseReleased(MouseEvent e) {   
  109.     }   
  110.        
  111.     public void mouseEntered(MouseEvent e) {   
  112.     }   
  113.        
  114.     public void mouseExited(MouseEvent e) {   
  115.     }   
  116.        
  117.     public void valueChanged(ListSelectionEvent e) {   
  118.         JList list=(JList)e.getSource();   
  119.         String text=list.getSelectedValue().toString();   
  120.         setText(text);   
  121.         popup.setVisible(false);   
  122.     }   
  123.        
  124.     public void actionPerformed(ActionEvent e) {   
  125.         if(popup.isVisible()){   
  126.             Object o=popup.getSelectedValue();   
  127.             if(o!=null)   
  128.                 setText(o.toString());   
  129.             popup.setVisible(false);   
  130.         }   
  131.         this.selectAll();   
  132.         this.requestFocus();   
  133.     }   
  134.        
  135.     public void keyTyped(KeyEvent e) {   
  136.     }   
  137.        
  138.     public void keyPressed(KeyEvent e) {   
  139.         if(e.getKeyCode()==KeyEvent.VK_DOWN){   
  140.             if(popup.isVisible()){   
  141.                 if(!popup.isSelected())   
  142.                     popup.setSelectedIndex(0);   
  143.                 else  
  144.                     popup.setSelectedIndex(popup.getSelectedIndex()+1);   
  145.             }   
  146.         }else if(e.getKeyCode()==KeyEvent.VK_UP){   
  147.             if(popup.isVisible()){   
  148.                 if(!popup.isSelected())   
  149.                     popup.setLastOneSelected();   
  150.                 else  
  151.                     popup.setSelectedIndex(popup.getSelectedIndex()-1);   
  152.             }   
  153.         }else if(e.getKeyCode()==KeyEvent.VK_PAGE_DOWN){   
  154.             if(popup.isVisible()){   
  155.                 if(!popup.isSelected())   
  156.                     popup.setSelectedIndex(0);   
  157.                 else  
  158.                     popup.setSelectedIndex(popup.getSelectedIndex()+5);   
  159.             }   
  160.         }else if(e.getKeyCode()==KeyEvent.VK_PAGE_UP){   
  161.             if(popup.isVisible()){   
  162.                 if(!popup.isSelected())   
  163.                     popup.setLastOneSelected();   
  164.                 else  
  165.                     popup.setSelectedIndex(popup.getSelectedIndex()-5);   
  166.             }   
  167.         }   
  168.     }   
  169.        
  170.     public void keyReleased(KeyEvent e) {   
  171.     }   
  172.  
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JList;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class AutoCompletionField extends JTextField implements DocumentListener, MouseListener, ListSelectionListener, ActionListener, KeyListener {
    
    private static int DEFAULT_PREFERRED_HEIGHT = 100;
    private ListPopup popup;
    private int preferredHeight = DEFAULT_PREFERRED_HEIGHT;
    private CompletionFilter filter;
    
    public void setFilter(CompletionFilter f) {
        filter = f;
    }
    
    public AutoCompletionField() {
        popup = new ListPopup();
        getDocument().addDocumentListener(this);
        addMouseListener(this);
        popup.addListSelectionListener(this);
        addActionListener(this);
        addKeyListener(this);
    }
    
    public void setPopupPreferredHeight(int h) {
        preferredHeight = h;
    }
    
    private boolean isListChange(ArrayList array) {
        if (array.size() != popup.getItemCount()) {
            return true;
        }
        for (int i = 0; i < array.size(); i++) {
            if (!array.get(i).equals(popup.getItem(i))) {
                return true;
            }
        }
        return false;
    }
    
    private void textChanged() {
                if ("".equals(this.getText()))
                        popup.setVisible(false);
                else {
                        if (!popup.isVisible()) {
                                showPopup();
                                requestFocus();
                        }
                        if (filter != null) {
                                ArrayList array = filter.filter(getText());
                                changeList(array);
                        }

                }

        }
    
    private void showPopup() {
        popup.setPopupSize(getWidth(), preferredHeight);
        popup.show(this, 0, getHeight()-1);
    }
    
    private void changeList(ArrayList array) {
        if (array.size() == 0) {
            if (popup.isVisible()) {
                popup.setVisible(false);
            }
        } else {
            if (!popup.isVisible()) {
                showPopup();
            }
        }
        if (isListChange(array)&&array.size()!=0) {
            popup.setList(array);
        }
    }
    
    public void insertUpdate(DocumentEvent e) {
        textChanged();
    }
    
    public void removeUpdate(DocumentEvent e) {
        textChanged();
    }
    
    public void changedUpdate(DocumentEvent e) {
        textChanged();
    }
    
    public void mouseClicked(MouseEvent e) {
        if(e.getClickCount()>1 && !popup.isVisible())
            textChanged();
    }
    
    public void mousePressed(MouseEvent e) {
    }
    
    public void mouseReleased(MouseEvent e) {
    }
    
    public void mouseEntered(MouseEvent e) {
    }
    
    public void mouseExited(MouseEvent e) {
    }
    
    public void valueChanged(ListSelectionEvent e) {
        JList list=(JList)e.getSource();
        String text=list.getSelectedValue().toString();
        setText(text);
        popup.setVisible(false);
    }
    
    public void actionPerformed(ActionEvent e) {
        if(popup.isVisible()){
            Object o=popup.getSelectedValue();
            if(o!=null)
                setText(o.toString());
            popup.setVisible(false);
        }
        this.selectAll();
        this.requestFocus();
    }
    
    public void keyTyped(KeyEvent e) {
    }
    
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_DOWN){
            if(popup.isVisible()){
                if(!popup.isSelected())
                    popup.setSelectedIndex(0);
                else
                    popup.setSelectedIndex(popup.getSelectedIndex()+1);
            }
        }else if(e.getKeyCode()==KeyEvent.VK_UP){
            if(popup.isVisible()){
                if(!popup.isSelected())
                    popup.setLastOneSelected();
                else
                    popup.setSelectedIndex(popup.getSelectedIndex()-1);
            }
        }else if(e.getKeyCode()==KeyEvent.VK_PAGE_DOWN){
            if(popup.isVisible()){
                if(!popup.isSelected())
                    popup.setSelectedIndex(0);
                else
                    popup.setSelectedIndex(popup.getSelectedIndex()+5);
            }
        }else if(e.getKeyCode()==KeyEvent.VK_PAGE_UP){
            if(popup.isVisible()){
                if(!popup.isSelected())
                    popup.setLastOneSelected();
                else
                    popup.setSelectedIndex(popup.getSelectedIndex()-5);
            }
        }
    }
    
    public void keyReleased(KeyEvent e) {
    }
}


3.CompletionFilter类:
  1. import java.util.ArrayList;   
  2.   
  3. public interface CompletionFilter {   
  4.     ArrayList filter(String text);   
  5.  
import java.util.ArrayList;

public interface CompletionFilter {
    ArrayList filter(String text);
}


4.DefaultCompletionFilter类:
  1. import java.util.ArrayList;   
  2. import java.util.Vector;   
  3.   
  4. public class DefaultCompletionFilter implements CompletionFilter {   
  5.   
  6.     private Vector vector;   
  7.   
  8.     public DefaultCompletionFilter() {   
  9.         vector new Vector();   
  10.     }   
  11.   
  12.     public DefaultCompletionFilter(Vector v) {   
  13.         vector v;   
  14.     }   
  15.     public ArrayList filter(String text) {   
  16.         ArrayList list=new ArrayList();   
  17.         String txt=text.trim();   
  18.         int length=txt.length();   
  19.         for(int i=0;i
  20.             Object o=vector.get(i);   
  21.             String str=o.toString();   
  22.             if(length==0||str.startsWith(txt))   //输入内容与记录前端比较   
  23.                 list.add(o);   
  24.         }   
  25.         return list;   
  26.     }   
  27.  
import java.util.ArrayList;
import java.util.Vector;

public class DefaultCompletionFilter implements CompletionFilter {

    private Vector vector;

    public DefaultCompletionFilter() {
        vector = new Vector();
    }

    public DefaultCompletionFilter(Vector v) {
        vector = v;
    }
    public ArrayList filter(String text) {
        ArrayList list=new ArrayList();
        String txt=text.trim();
        int length=txt.length();
        for(int i=0;i


5.使用的控件MyAutoField,使用时指定查询条件和自动提示的字段:
  1. import java.awt.im.InputMethodRequests;   
  2. import java.sql.ResultSet;   
  3. import java.sql.SQLException;   
  4. import java.util.Vector;   
  5. import javax.swing.JFrame;   
  6. import javax.swing.JPanel;   
  7. import javax.swing.UIManager;   
  8. import com.borland.jbcl.layout.XYConstraints;   
  9. import com.borland.jbcl.layout.XYLayout;   
  10. import yz.jlsys.connect.connector;   
  11.   
  12. public class MyAutoField extends AutoCompletionField {   
  13.        
  14.       
  15.     public MyAutoField(String sql,String field) {   
  16.         super();   
  17.         Vector tempvector new Vector();   
  18.         connector connec new connector(); // 数据库操作对象   
  19.         ResultSet rs connec.getResult(sql);   
  20.         try{   
  21.             //若结果集不为空,则显示每条记录   
  22.             boolean isexist false;   
  23.             isexist rs.first();   
  24.                
  25.             if(isexist)   
  26.             {   
  27.                 //移动光标到零的位置   
  28.                 rs.beforeFirst();   
  29.                 while(rs.next() )   
  30.                 {   
  31.                     if(tempvector.contains(rs.getString(field)))   
  32.                         continue;   
  33.                     tempvector.add(rs.getString(field));   
  34.                 }   
  35.             }   
  36.         }   
  37.         catch(SQLException e){   
  38.                
  39.         }   
  40.         this.setFilter(new DefaultCompletionFilter(tempvector));   
  41.     }   
  42.        
  43.     public InputMethodRequests getInputMethodRequests()    
  44.         return null    
  45.        
  46.        
  47.     public static void main(String args[]) {   
  48.            
  49.         try {   
  50.             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());   
  51.         catch (Exception ex) {   
  52.         }   
  53.         JFrame new JFrame();   
  54.         j.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);   
  55.         JPanel contentPane new JPanel();   
  56.         j.setContentPane(contentPane);   
  57.         contentPane.setLayout(new XYLayout());   
  58.         j.setSize(800,720);   
  59.         j.getContentPane().add(new MyAutoField("select from clienttable where CLIENTNAME like '%'""CLIENTNAME"), new XYConstraints(409520025));   
  60.         j.setVisible(true);   
  61.            
  62.     }   
  63.  
import java.awt.im.InputMethodRequests;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import com.borland.jbcl.layout.XYConstraints;
import com.borland.jbcl.layout.XYLayout;
import yz.jlsys.connect.connector;

public class MyAutoField extends AutoCompletionField {
        
    
    public MyAutoField(String sql,String field) {
        super();
        Vector tempvector = new Vector();
        connector connec = new connector(); // 数据库操作对象
                ResultSet rs = connec.getResult(sql);
                try{
                        //若结果集不为空,则显示每条记录
                        boolean isexist = false;
                        isexist = rs.first();
                        
                        if(isexist)
                        {
                                //移动光标到零的位置
                                rs.beforeFirst();
                                while(rs.next() )
                                {
                                        if(tempvector.contains(rs.getString(field)))
                                                continue;
                                        tempvector.add(rs.getString(field));
                                }
                        }
                }
                catch(SQLException e){
                    
                }
        this.setFilter(new DefaultCompletionFilter(tempvector));
    }
    
    public InputMethodRequests getInputMethodRequests() { 
        return null;  
    } 
    
    public static void main(String args[]) {
        
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception ex) {
        }
        JFrame j = new JFrame();
                j.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                JPanel contentPane = new JPanel();
                j.setContentPane(contentPane);
                contentPane.setLayout(new XYLayout());
                j.setSize(800,720);
                j.getContentPane().add(new MyAutoField("select * from clienttable where CLIENTNAME like '%'", "CLIENTNAME"), new XYConstraints(40, 95, 200, 25));
                j.setVisible(true);
        
    }
}


    以上5个文件放到同一个包中,从MyAutoField的main可运行。
 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有