gpt4 book ai didi

java - TableModelListener 仅有时有效

转载 作者:行者123 更新时间:2023-12-02 12:09:39 24 4
gpt4 key购买 nike

我有一个使用jTable(使用netbeans)的数据库应用程序,我已经向jTable添加了一个表模型监听器,因此当我编辑jTable时,它也会编辑数据库(MySQL)。然而,当用户单击 jTable 并单击按钮时,它会停止工作。

编辑:我意识到只有当我运行“jTable1.setModel(DbUtils.resultSetToTableModel(mySql.UpdateTable()));”时它才会停止工作更新表。当我按下运行该行的按钮时,它会停止工作,任何其他按钮或任何其他时间它都会工作。

更新表格:

    public ResultSet UpdateTable(){

Connection con = connect();
try{
Statement s = con.createStatement();
ResultSet resultset;
resultset = s.executeQuery("select * from customera");
return resultset;
}
catch(SQLException e){
System.out.println(e.getMessage());
}
return null;
}

}

表模型监听器类:

import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

public class TableActionListener implements TableModelListener{

Rob1 r;

public TableActionListener(){
r = new Rob1();
}

public void tableChanged(TableModelEvent e){
System.out.println("action");
int id = r.getID();
int column = e.getColumn();
int row = e.getFirstRow();



}

}

在构造函数中添加了表模型监听器:

jTable1.getModel().addTableModelListener( new TableActionListener());

为了单击该行,我添加了以下代码:

int id;

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
System.out.println(evt.getClickCount());

int row = jTable1.getSelectedRow();
int col = jTable1.getSelectedColumn();
id = (int)jTable1.getModel().getValueAt(row, 0);

}

返回当前ID:

 public int getID(){
return id;
}

最佳答案

It works however when the user clicks off the jTable and clicks a button it stops working.

默认情况下,只有当您移动到表中的另一个单元格时,表格单元格编辑器才会停止编辑。

因此,当您单击另一个组件时,您需要告诉表格停止编辑。然后数据将被保存并调用TableModelListener。

查看Table Stop Editing有两种方法可以做到这一点:

1)向表添加属性:

JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

2) 将代码添加到按钮的监听器:

if (table.isEditing())
table.getCellEditor().stopCellEditing();

您可能还想查看Table Cell Listener使用它来代替 TableModelListener 可能更合适。

关于java - TableModelListener 仅有时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46632288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com