自定义的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);
      }

    }

  }


}

Ext4使用总结(十二) 采用 CellEditing 方式的Grid,如何取得修改的单元格数据值

使用cellediting方式编辑数据的grid在保存数据时,需要进行数据的处理,所以数据处理的方式需要特别注意!        cellEditing 插件的事件 listeners: {...
  • lihxa2002
  • lihxa2002
  • 2017年03月06日 17:34
  • 576

JFace 可编辑的TableViewer的cell

分三步走: 2、设置ColumnProperties的内容  tableViewer.setColumnProperties(new String[]....) 2、设置CellEdito...
  • xueyepiaoling
  • xueyepiaoling
  • 2011年08月15日 21:47
  • 1632

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

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

swt comboBoxCelleditor 的使用

属性描述器的使用 1.新
  • Mrzhang0419
  • Mrzhang0419
  • 2014年10月21日 20:52
  • 997

13.6 Thread类自定义线程类

package cn.chen.thread; /* * * 线程: * 多线程: * 一个java程序只是有两个线程: * 一个是主线程负责main方法代码执行,一个是垃圾回收器线程...
  • qq_21904665
  • qq_21904665
  • 2016年11月15日 19:57
  • 570

为什么不能自定义java.lang.String

如果直接写一个java.lang.String类,并写一个main方法,即 package java.lang; public class String { public static ...
  • huhui_bj
  • huhui_bj
  • 2015年12月17日 21:02
  • 2383

自定义string类的简单实现

大家都知道C++中有一个string类,由于正在学习类,就模仿C++中的string类写了一个自定义的string类,下面是自定义string类的简单实现(Fedora下实现)。//MyString....
  • qiurisuixiang
  • qiurisuixiang
  • 2011年07月25日 20:06
  • 3170

java比较自定义对象相等的方法

今天做java开发需要比较两个自定义的对象的大小,发现直接比较会有问题,先说明如下: 开始时对象是这样定义的: public class DataCompose { int length; ...
  • zhurui536
  • zhurui536
  • 2013年11月13日 21:22
  • 1932

在MFC中使用自定义窗口类

1、在CYourApp::InitInstance中注册窗口类WNDCLASS wc;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hbrBackground = (H...
  • titilima
  • titilima
  • 2005年03月27日 16:55
  • 2131

【Android个人理解(四)】自定义Application类的使用

1、为什么要重写Application类 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构...
  • qq_22939165
  • qq_22939165
  • 2015年04月13日 20:40
  • 1675
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义的ComboBoxCellEditor类
举报原因:
原因补充:

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