java jtable 编辑_JTable可编辑

/**

*

*

Title:[FileFieldEditor]

*

Description: [JTable可编辑]

*

Copyright 2009 Upengs Co., Ltd.

*

All right reserved.

*

Created by [Huyvanpull] [2012-12-6]

*

Midified by [modifier] [modified time]

*

* @version 1.0

*/

@SuppressWarnings("serial")

public class FileFieldEditor extends JComboBox implements TableCellEditor

{

/** EventListenerList:保存EventListener 列表的类 */

private EventListenerList listenerList = new EventListenerList();

/** ChangeEvent用于通知感兴趣的参与者事件源中的状态已发生更改 */

private ChangeEvent changeEvent = new ChangeEvent(this);

/**

*

*

Description:[构造方法]

*

*/

public FileFieldEditor(String[] fileFields)

{

super();

for(String fileField : fileFields)

{

this.addItem(fileField);

}

// 请求终止编辑操作可以包含单元格的JTable收到,也可以从编辑器组件本身(如这里的JComboBox)获得

/*

* addActionListener(newActionListener(){ publicvoid

* actionPerformed(ActionEvent e) {

* System.out.println("ActionListener");

* //如同stopCellEditing,都是调用fireEditingStopped()方法 fireEditingStopped(); }

* });

*/

}

public void addCellEditorListener(CellEditorListener l)

{

listenerList.add(CellEditorListener.class, l);

}

public void removeCellEditorListener(CellEditorListener l)

{

listenerList.remove(CellEditorListener.class, l);

}

private void fireEditingStopped()

{

CellEditorListener listener;

Object[] listeners = listenerList.getListenerList();

for (int i = 0; i < listeners.length; i++)

{

if (listeners[i] == CellEditorListener.class)

{

// 之所以是i+1,是因为一个为CellEditorListener.class(Class对象),

// 接着的是一个CellEditorListener的实例

listener = (CellEditorListener) listeners[i + 1];

// 让changeEvent去通知编辑器已经结束编辑

// 在editingStopped方法中,JTable调用getCellEditorValue()取回单元格的值,

// 并且把这个值传递给TableValues(TableModel)的setValueAt()

listener.editingStopped(changeEvent);

}

}

}

public void cancelCellEditing()

{}

/**

* 编辑其中一个单元格,再点击另一个单元格时,调用。

*/

public boolean stopCellEditing()

{

// 可以注释掉下面的fireEditingStopped();然后在GenderEditor的构造函数中把

// addActionListener()的注释去掉(这时请求终止编辑操作从JComboBox获得),

// System.out.println("编辑其中一个单元格,再点击另一个单元格时,调用。");

// 请求终止编辑操作从JTable获得

fireEditingStopped();

return true;

}

/**

* 为一个单元格初始化编辑时,getTableCellEditorComponent被调用

*/

public Component getTableCellEditorComponent(JTable table, Object value,

boolean isSelected, int row, int column)

{

String s = String.valueOf(value);

setSelectedItem(s);

return this;

}

/**

* 询问编辑器它是否可以使用 anEvent 开始进行编辑。

*/

public boolean isCellEditable(EventObject anEvent)

{

return true;

}

/**

* 如果应该选择正编辑的单元格,则返回true,否则返回 false。

*/

public boolean shouldSelectCell(EventObject anEvent)

{

return true;

}

/**

* 返回值传递给TableValue(TableModel)中的setValueAt()方法

*/

public Object getCellEditorValue()

{

return this.getSelectedItem().toString();

}

}

posted on 2012-12-08 23:12 HUIKK 阅读(459) 评论(0)  编辑  收藏 所属分类: Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值