自定义的ComboBoxCellEditor类

原创 2007年09月12日 15:46:00
 
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);
      }

    }

  }


}

相关文章推荐

自定义spring容器类使用的jar包

  • 2017年10月09日 15:44
  • 6.24MB
  • 下载

自定义分页类

  • 2015年11月14日 13:39
  • 866B
  • 下载

关于JFace的TableViewer中引入ComboBoxCellEditor 快速双击对于Cell Combo无法展开问题的解决

背景: 之前我上传过一个关于TableViewer的使用说明(也提供的了源码下载)  当通过ComboBoxCellEditor设置姓名时,需要通过三次单击: 第一次:选中Cell 第二次:展开...

自定义view类实现展示gif

  • 2017年06月05日 11:52
  • 2.42MB
  • 下载

python 关于自定义 模块(类,函数),包的导入

1:关于函数的导入:    在C:\Users\Administrator\Desktop\python目录下,有一个fun.py文件,里面有一个函数: def yunsuan(a,b):...

自定义laravel表单请求验证类(FormRequest共用一个rules()),一个文件搞定

通过文本可以看到, Form Requests 对于简化表单请求的数据校验是非常强大和方便的.这里我做了一些修改,使得rules()能够可复用且只新增一个Request。...

ADO自定义的类

  • 2011年12月25日 09:37
  • 5KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义的ComboBoxCellEditor类
举报原因:
原因补充:

(最多只允许输入30个字)