自定义的ComboBoxCellEditor类

 
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);
      }

    }

  }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值