Erro: "Column Index out of range, 2 > 1"

Estou com o seguinte erro, mas não consigo identificar onde errei, peço a ajuda de vocês.

Erro: “java.sql.SQLException: Column Index out of range, 2 > 1.”.

Sendo que o problema está na saída vou colocar uma parte do código do jframe que acho que provavelmente esta o erro, caso esteja certo posto o resto.

ArrayList listaModelProduto = new ArrayList<>();

private void carregarProduto() {
listaModelProduto = controllerProduto.retornarListaProdutoController();
DefaultTableModel modelo = (DefaultTableModel) jTProduto.getModel();
modelo.setNumRows(0);

    int cont = listaModelProduto.size();
    for (int i = 0; i < cont; i++) {
        modelo.addRow(new Object[]{
            listaModelProduto.get(i).getIdProduto(),
            listaModelProduto.get(i).getProNome(),
        });
    }
}

Desde já agradeço.

Cadê o SQL?

Estou fazendo para testar.
No banco de dados tenho uma tabela com duas colunas, pk_id_produto e pro_nome na tbl_teste.
Tenho um código em uma classe java exclusiva para SQL:

public Connection conectar(){
try {
//Driver do PostgreSQL
Class.forName(“com.mysql.jdbc.Driver”).newInstance();

        //local do banco, nome do banco, usuario e senha
        String url = "jdbc:mysql://" + servidor + "/" + nomeDoBanco;
        this.setCon((Connection) DriverManager.getConnection(url, usuario, senha));

        //se ocorrer tudo bem, ou seja, se conectar a linha a segui é executada
        this.status = true;
    }
    catch(ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e){
        JOptionPane.showMessageDialog(null, e.getMessage());
    }
    return this.getCon();
}

/**
 * Executa consultas SQL
 * @param pSQL
 * @return int
 */
public boolean executarSQL(String pSQL){
    try {
        //createStatement de con para criar o Statement
        this.setStatement(getCon().createStatement());

        // Definido o Statement, executamos a query no banco de dados
        this.setResultSet(getStatement().executeQuery(pSQL));
        
    } catch (SQLException ex) {
        ex.printStackTrace();
        return false;
    }
    return true;
}

public boolean executarUpdateDeleteSQL(String pSQL){
    try {
        
        //createStatement de con para criar o Statement
        this.setStatement(getCon().createStatement());

        // Definido o Statement, executamos a query no banco de dados
        getStatement().executeUpdate(pSQL);
        
    } catch (SQLException ex) {
        ex.printStackTrace();
        return false;
    }
    return true;
}

/**
 * Executa insert SQL
 * @param pSQL
 * @return boolean
 */
public int insertSQL(String pSQL){
    int status = 0;
    try {
        //createStatement de con para criar o Statement
        this.setStatement(getCon().createStatement());

        // Definido o Statement, executamos a query no banco de dados
        this.getStatement().executeUpdate(pSQL);
        
        //consulta o ultimo id inserido
        this.setResultSet(this.getStatement().executeQuery("SELECT last_insert_id();"));
        
        //recupera o ultimo id inserido
        while(this.resultSet.next()){
            status = this.resultSet.getInt(1);
        }
        
        //retorna o ultimo id inserido
        return status;
    } catch (SQLException ex) {
        ex.printStackTrace();
        return status;
    }
}

/**
 * encerra a conexão corrente
 * @return boolean
 */
public boolean fecharConexao(){
   try {
       if((this.getResultSet() != null) && (this.statement != null)){
           this.getResultSet().close();
           this.statement.close();
       }
       this.getCon().close();
       return true;
   } catch(SQLException e) {
       JOptionPane.showMessageDialog(null, e.getMessage());
   }
   return false;

No primeiro código que coloquei tem o retornarListaProdutoController, ele chama o retornarListaProdutoDao que é o seguinte:

public ArrayList retornarListaProdutoDao() {
ArrayList listaModelProduto = new ArrayList < > ();
ModelProduto modelProduto = new ModelProduto();
try {
this.conectar();
this.executarSQL(“SELECT pk_id_produto + pro_nome FROM tbl_teste”);

        while (this.getResultSet().next()) {
            modelProduto = new ModelProduto();
            modelProduto.setIdProduto(this.getResultSet().getInt(1));
            modelProduto.setProNome(this.getResultSet().getString(2));               
            listaModelProduto.add(modelProduto);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        this.fecharConexao();
    } return listaModelProduto;
}

E no DAO acima do retornarLista tenho o retornar produto para fornecer os dados:

public ModelProduto retornarProdutoDao(int pIdProduto) {
ModelProduto modelProduto = new ModelProduto();
try {
this.conectar();
this.executarSQL(“SELECT pk_id_produto + pro_nome FROM tbl_teste WHERE pk_id_produto = '” + pIdProduto + “’”);

        while (this.getResultSet().next()) {
            modelProduto.setIdProduto(this.getResultSet().getInt(1));
            modelProduto.setProNome(this.getResultSet().getString(2));                
        }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        this.fecharConexao();
    }
    return modelProduto;
}

Quando postar código no fórum, utilize o botão de texto pré-formatado </>
Muito ruim ler seu código do jeito que foi postado.

Você escreveu pk_id_produto + pro_nome ao invés de pk_id_produto, pro_nome.
Então o seu select traz somente um resultado que é a soma do id_produto com o pro_nome.
Assim, quando você faz modelProduto.setProNome(this.getResultSet().getString(2)) vai lançar exceção pois não há uma segunda coluna no ResultSet.

Arrume o select que vai funcionar.
Evite chamar repetidas vezes o mesmo método, troque o código abaixo:

while (this.getResultSet().next()) {
    modelProduto.setIdProduto(this.getResultSet().getInt(1));
    modelProduto.setProNome(this.getResultSet().getString(2));
}

Por este:

ResultSet result = this.getResultSet();
while (result.next()) {
    modelProduto.setIdProduto(result.getInt(1));
    modelProduto.setProNome(result.getString(2));
}