我需要从JComboBox
单元格中的JTable
获取所选项目(以及其他数据,但我想通过关注单个单元格/列来简化我的问题)。组合框正在显示和工作,所以我需要的是获取所选项目。
我找不到任何能告诉我在我的代码中该怎么做的内容。所有这些例子看起来都非常复杂,我认为这是一个例行程序。我的JDialog
包含表格,其中有一个保存按钮。我认为文档告诉我表的所有更改都保存在表模型中。
我是否更正我从保存按钮的监听器中的表模型中提取更改的数据?如果是这样,我不知道我怎么知道哪些细胞被改变了,除非我应该处理每个细胞而不管它。有人可以纠正/澄清我的推理吗?
答案 0 :(得分:0)
您可以使用以下代码来跟踪表格更改。
public static class CellIndex {
private final int row;
private final int column;
private final int type;
private final static int ROW_ADDED=1;
private final static int ROW_DELETED=2;
private final static int CELL_UPDATED=3;
public CellIndex( int row,int column,int type ){
this.row=row;
this.column=column;
this.type=type;
}
public int getRow() {
return row;
}
public int getColumn() {
return column;
}
public int getType() {
return column;
}
}
跟踪单元格更改的代码
final ArrayList<CellIndex> changedCellIndex = new ArrayList<CellIndex>();
table.getModel().addTableModelListener( new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
int type = 0;
switch(e.getType() ) {
case TableModelEvent.DELETE:
type = CellIndex.ROW_DELETED;
break;
case TableModelEvent.UPDATE:
type = CellIndex.CELL_UPDATED;
break;
case TableModelEvent.INSERT:
type = CellIndex.ROW_ADDED;
break;
}
int end = e.getLastRow();
int start = e.getFirstRow();
if( end < 0 ) {
end = start;
}
for( int i = start;i<= end;i++ ) {
changedCellIndex.add( new CellIndex(i,e.getColumn(), type));
}
}
});