Java Jtable中的Delete按钮

Java Jtable中的Delete按钮,java,swing,jtable,jbutton,Java,Swing,Jtable,Jbutton,我在Jtable的每一行中添加了一个按钮,但没有执行任何操作。“删除”按钮必须从我的Jtable和数据库中删除该行。我曾想过使用map,map在我的数据库中包含行号和id,但我是stack,我无法继续使用该逻辑 这是我的代码: public class Fenetre extends JFrame { Statement stmt; Map<Integer,Integer> row_table = new HashMap<Integer,Integer>

我在Jtable的每一行中添加了一个按钮,但没有执行任何操作。“删除”按钮必须从我的Jtable和数据库中删除该行。我曾想过使用map,map在我的数据库中包含行号和id,但我是stack,我无法继续使用该逻辑

这是我的代码:

public class Fenetre extends JFrame {

    Statement stmt;
    Map<Integer,Integer> row_table  = new HashMap<Integer,Integer>();
public Fenetre(){     
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("JTable");
    this.setSize(600, 140);

    String requeteListeUser=" SELECT * FROM COMPTE_UTILISATEUR";
    try{
    stmt= (Statement) new Connexion().getConnection().createStatement();
    ResultSet resultat= stmt.executeQuery(requeteListeUser);
     resultat.last(); 
     String  title[] = {"Nom","Prenom","Matricule","Action"};
     int rowCount = resultat.getRow();

     Object[][] data  = new Object[rowCount][4];

     JTable tableau = new JTable(data,title);

    // this.tableau = new JTable(model);
    tableau.getColumn("Action").setCellRenderer(new ButtonRenderer());

     this.getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER); 

     int i=0;
        resultat.beforeFirst(); // on repositionne le curseur avant la première ligne 
        while(resultat.next()) //tant qu'on a quelque chose à lire
        {   
            //Remplire le tableau à deux dimensions Data[][] 
            for(int j=1;j<=4;j++)
            {
                 if(j != 4)data[i][j-1]=resultat.getObject(j)+"";
                 else data[i][j-1] = new JButton("Supprimer");

            }

            i++; 
            row_table.put(i, resultat.getInt("id_utilisateur"));

        }    
    }
    catch(SQLException ex){
    System.out.println(ex);
    }   
  }

  //Classe model customized
  class ZModel extends AbstractTableModel{
    private Object[][] data;
    private String[] title;

    //Constructor
    public ZModel(Object[][] data, String[] title){
      this.data = data;
      this.title = title;
    }

    //Number of columns
    public int getColumnCount() {
      return this.title.length;
    }

    //Number of rows
    public int getRowCount() {
      return this.data.length;
    }

    //The value at the specified  à l'emplacement spécifié
    public Object getValueAt(int row, int col) {
      return this.data[row][col];
    }   
  }

 public class ButtonRenderer extends JButton implements TableCellRenderer{

 public Component getTableCellRendererComponent(JTable table,Objectvalue,booleanisSelected, boolean isFocus, int row, int col) {
      //On écrit dans le bouton ce que contient la cellule
      setText("Suuprimer");
      //On retourne notre bouton
      return this;
     } }
  public static void main(String[] args){
    Fenetre fen = new Fenetre();
    fen.setVisible(true);
  }
}
公共类Fenetre扩展JFrame{
报表stmt;
Map row_table=new HashMap();
公共Fenetre(){
此.setLocationRelativeTo(空);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
本文件为setTitle(“JTable”);
这个。设置大小(600140);
String requeteListeUser=“从COMPTE_Usitateur中选择*”;
试一试{
stmt=(语句)new Connexion().getConnection().createStatement();
结果集resultstat=stmt.executeQuery(RequetListeUser);
resultat.last();
字符串标题[]={“Nom”、“Prenom”、“Matricule”、“Action”};
int rowCount=resultat.getRow();
对象[][]数据=新对象[rowCount][4];
JTable tableau=新的JTable(数据、标题);
//this.tableau=新JTable(模型);
tableau.getColumn(“Action”).setCellRenderer(新按钮渲染器());
this.getContentPane().add(新的JScrollPane(tableau),BorderLayout.CENTER);
int i=0;
resultat.beforeFirst();//关于重新定位前路线
while(resultat.next())//quelque上的常量qu'选择了lire
{   
//Remplire le tableauádeux维度数据[][]
for(int j=1;j签出。它显示了如何使用JButton作为列的呈现器和编辑器。您只需为编辑器编写自定义
操作


该链接给出了一个简单的删除操作示例,该操作从
表格模型中删除一行。您需要修改
操作
,以从数据库中删除该行。

请进一步解释您卡在何处?我应该将按钮的操作放在代码中的何处?该操作将如何执行?我的按钮“删除”在每一行中,必须从我的Jtable和数据库中删除该行。但我没有使用DefalutTableModel我使用的是AbstractTableModel否您没有使用AbstractTableModel。您正在扩展AbstractTableModel并实现自己的功能。因此,如果您希望能够从TableModel中删除数据,则还需要实现<代码>删除程序(…)
方法。因此,您可以选择在自定义TableModel中实现该功能,或者使用DefaultTableModel,因为它内置了此功能。根据您发布的代码,没有理由创建自定义TableModel,您可以使用DefaultTableModel。我给您的链接包含该代码。如果您无法复制代码,然后我就帮不上忙了。您发布的代码没有使用DefaultTableModel或我建议的代码,而且我不是一个读心术的人,所以我猜不出您是如何修改代码以使用我的建议的。@user3862042,您还没有发布演示问题的内容,所以不,我帮不上忙。