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