Swing


天行健 君子以自强不息

posts - 69, comments - 215, trackbacks - 0, articles - 16
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

修改JTable默认Copy实现

Posted on 2010-03-05 11:34 zht 阅读(1028) 评论(0)  编辑  收藏 所属分类: Swing

    最近有人问,如何在table中Ctrl+C赋值的时候,定制选中的内容。默认情况下是返回value值,但是很多情况下,我们都会定制一些显示,举个例子,取出来的原始位置数据是0,重载renderer以后可能就变成了"右",当我们copy的时候,而我们取到的值仍然是0,而对于客户而言,可能取出"右"可能更有意义,这个时候就需要做一些处理了,如下所示:

table.getActionMap().put("copy"new AbstractAction() {
            
public void
 actionPerformed(ActionEvent e) {
//至于此处如何处理,就看具体的逻辑了

                box.getLastSelectedElement();
                
int column =
 table.getSelectedColumn();
                
int row =
 table.getSelectedRow();
                
if (column != -1 && row != -1
) {
                    Object value 
=
 table.getValueAt(row, column);
                    StringSelection stringSelection 
= new
 StringSelection(value.toString()+"hello");
                    Clipboard clipboard 
=
 Toolkit.getDefaultToolkit().getSystemClipboard();
                    clipboard.setContents(stringSelection, 
null
);
                }
            }
        });