Adicionar dados SQLITE em Java

Pessoal estou com um problema que não estou conseguindo resolver em JAVA.
A intenção é fazer a conexão em um database SQLite. Porém não estou conseguindo fazer a inserção.
Deem uma olhada no código, por favor.

package conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConexaoBD {
	private Connection conecta;
	public Connection getConnection(){
		//avisando que o banco q vou utilizar é sqlite
		try {
			DriverManager.registerDriver(new org.sqlite.JDBC());
		} catch (SQLException e) {
			System.err.println("Problemas na hora de registrar driver");
			System.err.println("Saindo...");
			System.exit(1);
		}
	
	//Conectando no BD
	try {
		conecta =  DriverManager.getConnection("jdbc:sqlite:estoque.sqlite");
		
		
	} catch (SQLException e) {
		System.out.println("Impossivel se conectar no BD");
		System.exit(1);
	}
	return conecta;
}
}

Segunda classe :

package entidades;

import java.sql.Statement;

import org.sqlite.SQLiteConnection;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import conexao.ConexaoBD;

public class Produto {
	private String descricao;
	private int estoque_minimo;
	private int estoque_maximo;
	

	public Produto(String descricao, int estoque_minimo, int estoque_maximo) {
		super();
		setDescricao(descricao);
		setEstoque_minimo(estoque_minimo);
		setEstoque_maximo(estoque_maximo);
		Inserir();
	}

	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public int getEstoque_minimo() {
		return estoque_minimo;
	}
	public void setEstoque_minimo(int estoque_minimo) {
		this.estoque_minimo = estoque_minimo;
	}
	public int getEstoque_maximo() {
		return estoque_maximo;
	}
	public void setEstoque_maximo(int estoque_maximo) {
		this.estoque_maximo = estoque_maximo;
	}
	
	 public void Inserir(){  
		 ConexaoBD banco = new ConexaoBD();
		 Connection conecta = banco.getConnection();
			
         //cria objeto  
         Produto p = new Produto(getDescricao(), getEstoque_minimo(), getEstoque_maximo());           
         try {      

        	 Statement stmt = conecta.createStatement();
        	 //pegando o id maximo e somar mais um para adicionar o proximo produto
             ResultSet result = stmt.executeQuery("SELECT MAX(id) FROM produto");
              result.next();
              int idProx = result.getInt("MAX(id)");
              idProx++;
            // System.out.println(idProx);
             
             //Insere o produto
             String sql = "INSERT INTO produto(id,descricao,estoque_minimo, estoque_maximo) VALUES('idProx','p.getDescricao()','p.getEstoque_minimo()','p.getEstoque_maximo()');"; 
             stmt.executeUpdate(sql);
            
             
         } catch (SQLException u) {      
             throw new RuntimeException(u);      
         }      
     } 

}

Interface Gráfica

package interface_grafica;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.WindowListener;
import java.sql.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.xml.crypto.Data;
import entidades.Produto;

public class Janela extends JFrame{
/*
 JFRAME PRINCIAL
 */
private JMenuBar menuBar;
private JLabel status;
private JMenu menuProduto;
private JMenuItem addProduto, listarProduto;

/*
 * Adicao de produto
 */
private JLabel labelDescricao, labelEstoqueMin, labelEstoqueMax;
private JTextField tDescricao, tEstoqueMin, tEstoqueMax;
private JButton btnSalvar;
private JPanel telaDeAdicao;


private void addPainelProduto() {
	labelDescricao = new JLabel("Descrição");
	labelEstoqueMin = new JLabel("Estoque mínimo");
	labelEstoqueMax = new JLabel("Estoque Máximo");
	tDescricao = new JTextField(20);
	tEstoqueMin = new JTextField(10);
	tEstoqueMax = new JTextField(10);
	btnSalvar = new JButton("Salvar");
	
	btnSalvar.addActionListener((e)->{
		Produto produto = new Produto(tDescricao.getText(), Integer.parseInt(tEstoqueMin.getText()),
							Integer.parseInt(tEstoqueMax.getText()));
		
		status.setText(produto.toString());
		
		
	});
	
	telaDeAdicao = new JPanel(new FlowLayout());
	telaDeAdicao.add(labelDescricao);
	telaDeAdicao.add(tDescricao);
	telaDeAdicao.add(labelEstoqueMin);
	telaDeAdicao.add(tEstoqueMin);
	telaDeAdicao.add(labelEstoqueMax);
	telaDeAdicao.add(tEstoqueMax);
	telaDeAdicao.add(btnSalvar);
}




private void constroiBarradeStatus() {
	status = new JLabel("Status");
	add(status, BorderLayout.SOUTH);
}


private void constroiMenu() {
	
	menuBar = new JMenuBar();
	
	menuProduto = new JMenu("Produto");
	addProduto = new JMenuItem("Adicionar");
	listarProduto = new JMenuItem("Listar");
	
	addProduto.addActionListener((e)->{
		status.setText("Adicionando Produtos");
		add(telaDeAdicao);
		
	});
	
	listarProduto.addActionListener((e)->{
		
		status.setText("Listando Produtos");
		//nao implementado ainda
	});
	
	
	menuProduto.add(listarProduto);
	menuProduto.add(addProduto);
	menuBar.add(menuProduto);
	setJMenuBar(menuBar);

}

}

Para o produto ser adicionado eu coloquei em uma interface gráfica os campos que são passados por parâmetro após o usuário digitar e clicar em SALVAR, ou seja, os parâmetros serão passados no ActionListener do botão salvar na IG.

Não está dando certo, alguém sabe o que é?