Java 如何使用单个删除按钮从不同的JTable中删除行
我的应用程序中有一个选项卡式布局 请看这张图片 如上图所示,我在第一个选项卡(沙龙库存选项卡)的两个不同选项卡中有两个表 我想删除所选行 所做的是:removebutton的actionPerformed方法Java 如何使用单个删除按钮从不同的JTable中删除行,java,swing,jtable,Java,Swing,Jtable,我的应用程序中有一个选项卡式布局 请看这张图片 如上图所示,我在第一个选项卡(沙龙库存选项卡)的两个不同选项卡中有两个表 我想删除所选行 所做的是:removebutton的actionPerformed方法 int row_num =jTable4.getSelectedRow(); try{dtm_stock.removeRow(row_num);} catch(ArrayIndexOutOfBoundsException e){ JOpt
int row_num =jTable4.getSelectedRow();
try{dtm_stock.removeRow(row_num);}
catch(ArrayIndexOutOfBoundsException e){
JOptionPane.showMessageDialog(this,"Please select a Product");
}
这适用于当前选项卡(沙龙选项卡)
但是如何为其他选项卡(待售库存)实现相同的功能
进一步详情:
我在2-diff选项卡中有2-table,两者都有2-diff table模型(默认)
初始化时,数据设置为null
然后从数据库中检索数据并将其设置为相应的TableModel。
现在有一个删除按钮,它将从表中删除所选行
我想从表中删除所选行,而不考虑任何选项卡
代码:初始化
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");
}
}
从这里开始:
如果他们共享同一个模型,他们怎么会有不同的数据,请解释
您可以控制在视图中显示哪些列(JTable)
查看JTable的
removeColumn(…)
方法。它将从视图中删除一列。但是,数据仍然在TableModel中。如果我理解正确,您可以放置一些标志来保存当前可见选项卡的值,并使用If station从正确的模型中删除行。另一方面,更好的解决方案是创建某种控制器。控制器将存储活动选项卡,并具有removeRow方法。切换制表符将触发事件,以便控制器知道从哪个制表符删除行。若要更快获得更好的帮助,请发布一个。这两个表应共享一个共同的表模型;如果不是,这两个表模型应该共享一个公共数据源。@垃圾神-如果它们共享同一个模型,那么它们怎么会有不同的数据,请解释。如果这两个表共享一个公共表模型,请使用@camickr's。如果两个表模型不同,它们应该共享一个共同的数据源。您的想法也是正确的,但问题是,在表模型中设置数据的查询对于每个表都是不同的,所以对我来说有点复杂。