但仍然无法修复。我的目的是当用户在组合框中选择delete选项时,我只想完全删除该行。顺便说一下,removeRow()方法可以在侦听器外部正常工作。下面是代码和说明:
String[] columnNames = {"Kargo ID",
"Alıcı Adres",
"Ağırlık(KG)",
"Tutar(TL)",
"Alım Saati","Durum","İletim Saati"};
Object[][] data = {
{new Integer(3), "Sinan Caddesi",
new Integer(100), new Integer(5),"" ,"",""}};
final DefaultTableModel dtm = new DefaultTableModel(data,columnNames);
final JTable table = new JTable(dtm){
@Override
public boolean isCellEditable(int row, int column) {
return column == 5;//Combobox column
}
};
//Making Combobox
TableColumn c = table.getColumnModel().getColumn(5);
JComboBox comboBox = new JComboBox();
comboBox.addItem("");
comboBox.addItem("Delete");
c.setCellEditor(new DefaultCellEditor(comboBox));
//System.out.println(dtm.getRowCount());
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(false);
//I printed row and column numbers, they re correct.
dtm.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
DefaultTableModel model = (DefaultTableModel)e.getSource();
Object data = model.getValueAt(row, column);
//System.out.println(data); DATA IS CORRECT
if(((String)data).equals("Delete"))
dtm.removeRow(row);//Exception Here
//System.out.println(row + " " + column);
}
});
我是不是漏了什么重要的地方?如有任何帮助,我们将不胜感激。
“非常”的基本思想是,当调用TableModel#setvalue
时,您希望检查被修改的列
。如果column
是(在本例中)5
,您将希望检查值是什么...
例如...
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if (columnIndex == 5) {
if ("Delete".equals(aValue)) {
removeRow(rowIndex);
}
}
}
请记住,上面的示例覆盖了setvalueat
的默认行为,因此如果您依赖于模型中要更新的值,则需要调用super.setvalueat(...)
这是我的DAO方法: 这是我的控制器: 当我试图删除到对象时,删除分离的实例时出错。 我在合并前后做了sysout,都是false,但我不知道为什么。为什么我的对象仍然是分离的? 在stackTrace之前,我有这样的消息: KWI21, 2016 10:47:45AMorg.apache.catalina.core.Standard ardWrapperValve在路径[/zapisywacz.
问题内容: 我正在尝试从ArrayList中删除一个对象。每个Item对象都有3个属性;1. itemNum 2.信息3.费用。我也有3个类,即1。Item类定义了存储在目录中的单个项目。2. Catalog类维护Item对象的列表。3带main方法的客户端类。我在Set类中具有设置并获取,在Catalog中具有ArrayList。在客户端中,提示我“输入要删除的itemNum。如何基于对item
问题内容: 我有一个具有静态对象ArrayList的ClassA 现在,我要像这样从此列表中删除一个对象 这是用Meteorit类编写的。但是,当我想使用ArrayList中的对象时,它将引发异常。 我使用Iterator从ArrayList中删除对象,但是现在我不知道如何在这种情况下使用它。 问题答案: 这是因为某个线程实际上正在for每个循环中查看此列表,也许您正在尝试在for-each主体中
问题内容: 如果我需要从List中删除一个对象(假设字符串“ abc” linkedList或ArrayList),则可以删除哪一个?(我认为两者都是相同的) ,如果我使用Linkedlist和arraylist,那么时间和空间的复杂度是多少 (我相信两者的时间复杂度都为O(n)相同) 问题答案: 两者都具有相同的时间复杂度-O(n),但是恕我直言,该版本会更快,尤其是在大型列表中,因为当您从数组
问题内容: 我对JavaScript的运算符有些困惑。采取以下代码: 执行完这段代码后,is ,但仍指与完全相同的对象。我猜这个对象是指向相同的对象。 这使我感到困惑,因为我希望写操作可以删除指向内存中的对象,而不仅仅是变量。 这是因为JavaScript的垃圾回收工作在保留/释放的基础,所以,如果我没有指向对象的任何其他变量,它 会 从内存中清除? (顺便说一下,我的测试是在Safari 4中完
我不确定是什么导致了这个例外。