我是靠谱客的博主 大力老鼠,最近开发中收集的这篇文章主要介绍java tableeditor,定制JTable CellEditor使单元格显示不同控件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.JTable的单元格默认是显示文本的;

2.如要某一列是JCheckBox,需要在model中定义该列的type为Boolean.class,

tblEvent.setModel(new DefaultTableModel(headerArray, 0)

{

@Override

public Class> getColumnClass(int columnIndex)

{

if(columnIndex==7)

{

return Boolean.class;

}

else

{

return Object.class;

}

}

@Override

public boolean isCellEditable(int row, int column)

{

return column==7;

}

});

或者通过设置

tblX.getColumnModel().getColumn(x).setCellEditor(new JCheckBox())

3.如要某一列是JComboBox,需要设置:

JComboBox cbX = new JComboBox(new String[]{"item1","item2"});

tblX.getColumnModel().getColumn(x).setCellEditor(new DefaultCellEditor(cbX));

如要根据每行内容的不同,使得组合框显示不同的候选项,可以通过:

tblEvent.addMouseListener(new MouseAdapter()

{

@Override

public void mousePressed(MouseEvent evt)

{

JTable t = (JTable) evt.getSource();

int c = t.getSelectedColumn();

logger.info("column=" + c);

if (c == 7)

{

EventInfoDTO event = (EventInfoDTO) t.getValueAt(t.getSelectedRow(), 0);

logger.info("eventId=" + event.getEventId());

switch (event.getEventId())

{

case 1:

case 2:

case 3:

String[] action1 = new String[]

{constBundle.getString("log")};

cbActions.setModel(new DefaultComboBoxModel(action1));

break;

case 4:

case 5:

case 6:

case 7:

String[] action2 = new String[]

{constBundle.getString("log"), constBundle.getString("warn"), constBundle.getString("disconnect")};

cbActions.setModel(new DefaultComboBoxModel(action2));

break;

case 8:

String[] action3 = new String[]

{constBundle.getString("log"), constBundle.getString("warn"), constBundle.getString("lock")};

cbActions.setModel( new DefaultComboBoxModel(action3));

break;

default:

logger.error(event.getActionId() +" is an exception action id.");

break;

}

}

}

});

如要在组合框改变了选择项后,作出其他相应,可以参考如下:

eventModel = (DefaultTableModel) tblEvent.getModel();

eventModel.addTableModelListener(new TableModelListener()

{

@Override

public void tableChanged(TableModelEvent e)

{

int column = e.getColumn();

int row = e.getLastRow();

if (column == 7)

{

System.out.println("column=" + column + ",row=" + row);

eventModel.setValueAt(true, row, 9);

}

}

});

最后

以上就是大力老鼠为你收集整理的java tableeditor,定制JTable CellEditor使单元格显示不同控件的全部内容,希望文章能够帮你解决java tableeditor,定制JTable CellEditor使单元格显示不同控件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部