Estou tentando criar uma JTable em um frame buscando as informações de uma tabela, mais ele dá erro na hora de adicionar os dados, esse é o erro: The method add(int, Maquina) in the type ArrayList is not applicable for the arguments (int, String, String, String, String), segue abaixo o codigo que criei.
criação do frame:
import java.awt.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import ATM.atmMaquina;
import Classes.Maquina;
import Conexao.ConnectionFactory;
public class InternalFrameDois extends JInternalFrame {
/**
*
*/
public InternalFrameDois() throws SQLException {
super("Cadastro de Máquina", true, true, true, true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String sql = "";
setSize(screenSize.width, screenSize.height);
JPanel panel1 = new JPanel();
panel1.setPreferredSize(new Dimension(screenSize.width, screenSize.height));
panel1.setBackground(new Color(230, 220, 20));
JLabel lblPesquisaMaquina = new JLabel();
lblPesquisaMaquina.setText("Pesquisar: ");
lblPesquisaMaquina.setBounds(10, 50, 70, 30);
try {
conn = ConnectionFactory.getConnection();
sql = "SELECT * FROM maquina " + "WHERE maq_ativo = true " + "AND maq_delete <> '*';";
stmt = conn.prepareStatement(sql);
stmt.execute();
rs = stmt.executeQuery(sql);
ArrayList<Maquina> maquina = new ArrayList<>();
while (rs.next()) {
maquina.add(
rs.getInt("maq_codigo"),
rs.getString("maq_placa"),
rs.getString("maq_descricao"),
rs.getString("maq_ip"),
rs.getString("maq_mac")
);
}
stmt.close();
conn.close();
atmMaquina mmdlMaquina = new atmMaquina(maquina);
JTable tblMaquina = new JTable(mmdlMaquina);
JScrollPane scpMaquina = new JScrollPane(tblMaquina);
panel1.add(scpMaquina);
} catch (Exception e) {
System.out.println("Deu Erro !!!");
}
panel1.add(lblPesquisaMaquina);
Container container1 = getContentPane();
container1.add(panel1);
pack();
panel1.setLayout(null);
}
}
Criação da AbstractTable Model:
package ATM;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import Classes.Maquina;
public class atmMaquina extends AbstractTableModel {
private ArrayList<Maquina> maquina;
private String nmcFuncionario[] = {
"Codigo",
"Placa",
"Descricao",
"IP",
"MAC"
};
private final int codigo = 0;
private final int placa = 1;
private final int descricao = 2;
private final int ip = 3;
private final int mac = 4;
public atmMaquina(ArrayList<Maquina> maquina) {
this.maquina = maquina;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
public int getRowCount() {
return maquina.size();
}
@Override
public int getColumnCount() {
return nmcFuncionario.length;
}
@Override
public String getColumnName(int indice) {
return nmcFuncionario[indice];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case codigo:
return Integer.class;
case placa:
return String.class;
case descricao:
return String.class;
case ip:
return String.class;
case mac:
return String.class;
default:
return String.class;
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Maquina maquina = this.maquina.get(rowIndex);
switch (columnIndex) {
case codigo:
return maquina.getMAQ_CODIGO();
case placa:
return maquina.getMAQ_PLACA();
case descricao:
return maquina.getMAQ_DESCRICAO();
case ip:
return maquina.getMAQ_IP();
case mac:
return maquina.getMAQ_MAC();
}
return null;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Maquina maquina = this.maquina.get(rowIndex);
switch (columnIndex) {
case codigo:
maquina.setMAQ_CODIGO((int) aValue);
break;
case placa:
maquina.setMAQ_PLACA(String.valueOf(aValue));
break;
case descricao:
maquina.setMAQ_DESCRICAO(String.valueOf(aValue));
break;
case ip:
maquina.setMAQ_IP(String.valueOf(aValue));
break;
case mac:
maquina.setMAQ_MAC(String.valueOf(aValue));
break;
}
fireTableDataChanged();
}
}
Criação da Classe Geters and Seters:
package Classes;
public class Maquina {
private int MAQ_CODIGO;
private String MAQ_PLACA;
private String MAQ_DESCRICAO;
private String MAQ_IP;
private String MAQ_MAC;
public Maquina(int MAQ_CODIGO, String MAQ_PLACA, String MAQ_DESCRICAO, String MAQ_IP, String MAQ_MAC) {
this.MAQ_CODIGO = MAQ_CODIGO;
this.MAQ_PLACA = MAQ_PLACA;
this.MAQ_DESCRICAO = MAQ_DESCRICAO;
this.MAQ_IP = MAQ_IP;
this.MAQ_MAC = MAQ_MAC;
}
public int getMAQ_CODIGO() {
return MAQ_CODIGO;
}
public void setMAQ_CODIGO(int mAQ_CODIGO) {
MAQ_CODIGO = mAQ_CODIGO;
}
public String getMAQ_PLACA() {
return MAQ_PLACA;
}
public void setMAQ_PLACA(String mAQ_PLACA) {
MAQ_PLACA = mAQ_PLACA;
}
public String getMAQ_DESCRICAO() {
return MAQ_DESCRICAO;
}
public void setMAQ_DESCRICAO(String mAQ_DESCRICAO) {
MAQ_DESCRICAO = mAQ_DESCRICAO;
}
public String getMAQ_IP() {
return MAQ_IP;
}
public void setMAQ_IP(String mAQ_IP) {
MAQ_IP = mAQ_IP;
}
public String getMAQ_MAC() {
return MAQ_MAC;
}
public void setMAQ_MAC(String mAQ_MAC) {
MAQ_MAC = mAQ_MAC;
}
}
Por favor alguém poderia me ajudar, na hora que tento dar maquina.add ele dá aquele erro que descrevi lá em cima, pelo que pesquisei até agora o problema é algum argumento, mais ainda não consegui entender qual.