Java 如何在jTable顶部显示最后添加的行
您好,我有一个问题,我想知道是否有办法在运行时将最后添加的行显示在jTable的顶部我更新了select语句“select*FROM table ORDER BY ID DESC”,它填充了我的表,但最近添加的行显示在表的底部,直到我关闭程序并再次打开它,然后它显示在顶部 TableItemsModel:Java 如何在jTable顶部显示最后添加的行,java,swing,jtable,Java,Swing,Jtable,您好,我有一个问题,我想知道是否有办法在运行时将最后添加的行显示在jTable的顶部我更新了select语句“select*FROM table ORDER BY ID DESC”,它填充了我的表,但最近添加的行显示在表的底部,直到我关闭程序并再次打开它,然后它显示在顶部 TableItemsModel: public class TableItemsModel extends AbstractTableModel{ ItemsDao itemDao = new ItemsDa
public class TableItemsModel extends AbstractTableModel{
ItemsDao itemDao = new ItemsDao();
private List<Items> items;
public TableItemsModel() throws Exception {
this.items = (ArrayList<Items>)itemDao.getItemsList();
}
private DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
@Override
public int getRowCount() {
return items.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Items item = items.get(rowIndex);
switch(columnIndex){
case 0: return p.getProductName();
case 1: return p.getProductCategory();
case 2: return p.getProductPrice();
default: return "";
}
}
public String getColumnName(int column){
switch(column){
case 0: return "PRODUCT NAME";
case 1: return "PRODUCT CATEGORY";
case 2: return "PRICE";
default: return "";
}
}
public void addRow(Items item){
items.add(item);
fireTableRowsInserted(items.size()-1, items.size()-1);
}
public void deleteRow(Items item){
items.remove(item);
fireTableRowsInserted(items.size()-1, items.size()-1);
}
}
首先,为什么要调用自定义对象
项
。那是复数。对象应使用单数形式的名称。因此,更好的名称应该是Item
,甚至可能是Product
,因为在所有方法名称中都使用“Product”。保持一致
你能告诉我如何将insertRow方法包含到我的代码中吗
您正在使用列表
保存数据。阅读列表
API,您将看到有两种add(…)
方法。一种方法在列表的末尾添加元素,另一种方法在列表的指定索引处插入元素
因此,要在列表的开头添加一个项目,您需要指定0作为索引
要执行此操作,请复制addRow(…)方法的逻辑,但需要两个参数:
public void insertRow(int index, Item item)
然后将方法中的逻辑更改为:
在列表的指定索引处插入项目
在指定索引处调用fireTableRowsInserted(..)方法
通过传递索引,可以使方法非常灵活。您可以在开始或中间插入项目(如果需要)。但是最近添加的行显示在表的底部-使用您的Debug TabrMuldOL的“代码”> INSERTROW(…)/代码>方法在Top.PultAudioAdDRW(项目项)中插入行。}这是一种添加行并更新表的方法。我怎么做?更新:添加了完整的代码,您能告诉我如何将insertRow方法包含到我的代码中吗?它很有效,谢谢
public void insertRow(int index, Item item)