概述
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使单元格显示不同控件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复