自定义的ComboBoxCellEditor类

来源:互联网 发布:ubuntu怎么查看显卡 编辑:程序博客网 时间:2024/05/16 19:41
 
import javax.swing.JComboBox;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import java.awt.Dimension;
import javax.swing.table.TableCellEditor;
import java.util.EventObject;
import javax.swing.event.CellEditorListener;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.event.EventListenerList;
import javax.swing.event.ChangeEvent;

/**
 *
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: wri</p>
 *
 * 
@author tang08
 * 
@version 1.0
 
*/

public class ComboBoxCellEditor
    
extends JComboBox implements TableCellEditor {
  
protected EventListenerList listenerList = new EventListenerList();
  
protected ChangeEvent changeEvent = new ChangeEvent(this);
  
private DefaultComboBoxModel model = new DefaultComboBoxModel();

  
public ComboBoxCellEditor() {
    
super();
    
this.setPreferredSize(new Dimension(8025));
    
this.setModel(model);
  }


  
/**
   * 设置初始值
   * 
@param value Object
   
*/

  
public void setValue(Object value) {
    
if (model.getSize() > 0{
      model.removeAllElements();
    }

    
if (value != null{
      
if (value instanceof String) {
        model.addElement(value);
        
return;
      }

      List list 
= (List) value;
      
for (int i = 0; i < list.size(); i++{
        model.addElement(list.get(i));
      }

      
this.setSelectedIndex(0);
    }

  }


  
public Component getTableCellEditorComponent(JTable table, Object value,
                                               
boolean isSelected, int row,
                                               
int column) {
    
if (value == null{
       String select 
= (String)this.getSelectedItem();
       setSelectedItem(select);
       
return this;
     }

     setSelectedItem(value);
     
return this;
  }


  
/**
   * 获得设置数据值
   * 
@return Object
   
*/

  
public Object getValue() {
    
return this.getSelectedItem();
  }


  
public void setEnable(boolean enable) {
    
super.setEnabled(enable);
  }


  
public Object getCellEditorValue() {
    
return (String)this.getSelectedItem();
  }


  
public boolean isCellEditable(EventObject anEvent) {
    
return true;
  }


  
public boolean shouldSelectCell(EventObject anEvent) {
    
return true;
  }


  
public boolean stopCellEditing() {
    fireEditingStopped();
    
return true;
  }


  
public void cancelCellEditing() {
    fireEditingCanceled();
  }


  
public void addCellEditorListener(CellEditorListener l) {
    listenerList.add(CellEditorListener.
class, l);
  }


  
public void removeCellEditorListener(CellEditorListener l) {
    listenerList.remove(CellEditorListener.
class, l);
  }


  
/**
   * fireEditingStopped
   
*/

  
protected void fireEditingStopped() {
    CellEditorListener listener;
    Object[] listeners 
= listenerList.getListenerList();
    
for (int i = 0; i < listeners.length; i++{
      
if (listeners[i] == CellEditorListener.class{
        listener 
= (CellEditorListener) listeners[i + 1];
        listener.editingStopped(changeEvent);
      }

    }

  }


  
protected void fireEditingCanceled() {
    CellEditorListener listener;
    Object[] listeners 
= listenerList.getListenerList();
    
for (int i = 0; i < listeners.length; i++{
      
if (listeners[i] == CellEditorListener.class{
        listener 
= (CellEditorListener) listeners[i + 1];
        listener.editingCanceled(changeEvent);
      }

    }

  }


}

原创粉丝点击