我的应用程序中有一个标签式布局 请参阅此图片
因此,您可以在上面的图片中看到我在第一个标签中的2个不同标签中有2个表(SALON STOCK标签) 我想删除选定的行 做的是:removebutton的actionPerformed方法
int row_num =jTable4.getSelectedRow();
try{dtm_stock.removeRow(row_num);}
catch(ArrayIndexOutOfBoundsException e){
JOptionPane.showMessageDialog(this,"Please select a Product");
}
这适用于当前标签(SALON TAB) 但如何为其他标签(待售股票)实施相同的内容。
进一步详情:
我在2-diff选项卡中有2个表,并且有2个不同的TableModel(默认) 在初始化时,数据设置为null 之后,从数据库中检索数据并将其设置为相应的TableModel。 现在有一个删除按钮,它将从表中删除选定的行
我想从表中删除所选行而不管任何Tab
代码:初始化
jTable4 = new javax.swing.JTable();
dtm_stock = new DefaultTableModel(new Object [][] {
{null,null, null, null},
{null,null, null, null}
},
new String [] {
"ID","NAME", "PRICE", "QUANTITY"
});
jTable4.setModel(dtm_stock
);
添加数据:
//-----ADD STOCK TO THE STOCK TABLE --------------//
try {
ResultSet r7 = con.createStatement().executeQuery("select * from stock");
while(r7.next()){
dtm_stock.insertRow(dtm_stock.getRowCount(),new Object[]{r7.getString("id"),r7.getString("p_name"),r7.getString("price"),r7.getString("qty")});
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(this,e.toString());
}
如果我将相同的TableModel添加到另一个表中,那么数据将转到该表并且当前变为空白:
这似乎已经成功了:`
int selectedIndex = jTabbedPane2.getSelectedIndex();
if(selectedIndex == 0 ){
int row_num =stock_table.getSelectedRow();
try{
dtm_stock.removeRow(row_num);
}
catch(ArrayIndexOutOfBoundsException/*|SQLException*/ e){
JOptionPane.showMessageDialog(this,"Please select a Product");
}
}//if
if(selectedIndex == 1){
int row_num =sale_Stock_table.getSelectedRow();
try{
dtm_sale_stock.removeRow(row_num);
}
catch(ArrayIndexOutOfBoundsException/*|SQLException*/ e){
JOptionPane.showMessageDialog(this,"Please select a Product");
}
}
答案 0 :(得分:1)
如果他们共享同一模型,他们如何拥有不同的数据,请解释
您可以控制在视图中显示哪些列(JTable)。
查看JTable的removeColumn(...)
方法。它从视图中删除一列。但是数据仍然在TableModel中。
答案 1 :(得分:0)
如果我理解为corectly你可以放一些标志来保存当前可见标签的值,并使用if statment从正确的模型中删除行。另一方面,更好的解决方案是创建某种控制器。控制器将存储活动选项卡,并具有removeRow方法。切换选项卡将触发事件,因此控制器将知道从哪个选项卡删除行。