TextList.java


Dosyayı İndir
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.util.*;
public class TextList extends JPanel implements ListSelectionListener,DocumentListener,Runnable {
  private JTextField theField;
  private JList theList;
  private JLabel theLabel;
  public TextList(String label,JList list){
    theList=list;
    theLabel=new JLabel(label);
    theField=new JTextField();
    theList.addListSelectionListener(this);
    theField.getDocument().addDocumentListener(this);
    JPanel upPanel=new JPanel();
    upPanel.setLayout(new GridLayout(2,1));
    upPanel.add(theLabel);
    upPanel.add(theField);
    setLayout(new BorderLayout());
    add(upPanel,BorderLayout.NORTH);
    add(new JScrollPane(theList),BorderLayout.CENTER);
  }
  public String getSelected(){
    return (String)theList.getSelectedValue();
  }
  public String getText(){
    return theField.getText();
  }
  public void run(){
    updateSelect();
  }
  public void valueChanged(ListSelectionEvent e){
    if(theList.getSelectedValue()!=null){
      String select=(String)theList.getSelectedValue();
      theField.setText(select);
    }
  }
  public void changedUpdate(DocumentEvent e){
     SwingUtilities.invokeLater(this);
  }
  public void insertUpdate(DocumentEvent e){
    SwingUtilities.invokeLater(this);
  }
  public void removeUpdate(DocumentEvent e){
    SwingUtilities.invokeLater(this);
  }
  private void updateSelect(){
    if(theField.getText()!=null){
      String text=theField.getText();
      viewListItem(text);
    }
  }
  private void viewListItem(String text){
    if(contains(text)){
      theList.setSelectedValue(text,true);
    }else{
      String item=getNearItem(text);
      if(item!=null){
        int index=getIndex(item);
        if(index!=-1){
          theList.clearSelection();
          theList.ensureIndexIsVisible(index);
        }
      }
    }
  }
  private String getNearItem(String text){
    ListModel model=theList.getModel();
    int size=model.getSize();
    for(int i=0;i<size;i++){
      String item=(String)model.getElementAt(i);
      if(item.compareToIgnoreCase(text)>0){
        return item;
      }
    }
    return null;
  }
  private boolean contains(String text){
    ListModel model=theList.getModel();
    int size=model.getSize();
    for(int i=0;i<size;i++){
      String item=(String)model.getElementAt(i);
      if(item.equalsIgnoreCase(text)){
        return true;
      }
    }
    return false;
  }
  private int getIndex(String text){
    ListModel model=theList.getModel();
    int size=model.getSize();
    for(int i=0;i<size;i++){
      String item=(String)model.getElementAt(i);
      if(item.equalsIgnoreCase(text)){
        return i;
      }
    }
    return -1;
  }
  public static void main(String[] args) {
    JFrame frame=new JFrame();
    frame.setBounds(0,0,200,300);
    String[] items=new String[]{"ali","bae","bge","cdd","fsd","fzfg","fzh","hgt","mmn",
      "mss","nnb","oo","ozz","ttt","uuu","vvv","zsd","zzz"};
    JList list=new JList(items);
    TextList textList=new TextList("Test",list);
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add(textList,BorderLayout.CENTER);
    frame.setVisible(true);
  }
}
				
Dosyayı İndir

Bu Sayfayı Paylaş:




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir