Boa tarde, Estou tentando criar um TableModel
, após ter tido vários problema com Default e várias recomendações para mudar, mas estou com algumas duvidas de como montar alguns processo nela.
1 - Minhas colunas que estão declaradas como int
, não está deixando eu digitar nelas.
2 - Colocar um combobox
na coluna “Status”.
Segue Código:
Classe Fmea
public class Fmea {
private int id;
private int ordem;
private int op;
private String funcao_processo;
private String requisito_processo;
private String modo_falha;
private String efeito_potencial;
private int seve_fmea;
private int classificacao;
private String causa_mecanismo;
private String six_ms;
private String controles_prevencao;
private int ocor_fmea;
private String controles_deteccao;
private int detec_fmea;
private int rpn_fmea;
private String acao_recomendada;
private String numero_reclamacao;
private String responsavel;
private String prazo;
private String status;
private int sever;
private int ocorr;
private int detec;
private int rpn;public int getId() { return id; } public void setId(int id) { this.id = id; } public int getOrdem() { return ordem; } public void setOrdem(int ordem) { this.ordem = ordem; } public int getOp() { return op; } public void setOp(int op) { this.op = op; } public String getFuncao_processo() { return funcao_processo; } public void setFuncao_processo(String funcao_processo) { this.funcao_processo = funcao_processo; } public String getRequisito_processo() { return requisito_processo; } public void setRequisito_processo(String requisito_processo) { this.requisito_processo = requisito_processo; } public String getModo_falha() { return modo_falha; } public void setModo_falha(String modo_falha) { this.modo_falha = modo_falha; } public String getEfeito_potencial() { return efeito_potencial; } public void setEfeito_potencial(String efeito_potencial) { this.efeito_potencial = efeito_potencial; } public int getSeve_fmea() { return seve_fmea; } public void setSeve_fmea(int seve_fmea) { this.seve_fmea = seve_fmea; } public int getClassificacao() { return classificacao; } public void setClassificacao(int classificacao) { this.classificacao = classificacao; } public String getCausa_mecanismo() { return causa_mecanismo; } public void setCausa_mecanismo(String causa_mecanismo) { this.causa_mecanismo = causa_mecanismo; } public String getSix_ms() { return six_ms; } public void setSix_ms(String six_ms) { this.six_ms = six_ms; } public String getControles_prevencao() { return controles_prevencao; } public void setControles_prevencao(String controles_prevencao) { this.controles_prevencao = controles_prevencao; } public int getOcor_fmea() { return ocor_fmea; } public void setOcor_fmea(int ocor_fmea) { this.ocor_fmea = ocor_fmea; } public String getControles_deteccao() { return controles_deteccao; } public void setControles_deteccao(String controles_deteccao) { this.controles_deteccao = controles_deteccao; } public int getDetec_fmea() { return detec_fmea; } public void setDetec_fmea(int detec_fmea) { this.detec_fmea = detec_fmea; } public int getRpn_fmea() { return rpn_fmea; } public void setRpn_fmea(int rpn_fmea) { this.rpn_fmea = rpn_fmea; } public String getAcao_recomendada() { return acao_recomendada; } public void setAcao_recomendada(String acao_recomendada) { this.acao_recomendada = acao_recomendada; } public String getNumero_reclamacao() { return numero_reclamacao; } public void setNumero_reclamacao(String numero_reclamacao) { this.numero_reclamacao = numero_reclamacao; } public String getResponsavel() { return responsavel; } public void setResponsavel(String responsavel) { this.responsavel = responsavel; } public String getPrazo() { return prazo; } public void setPrazo(String prazo) { this.prazo = prazo; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public int getSever() { return sever; } public void setSever(int sever) { this.sever = sever; } public int getOcorr() { return ocorr; } public void setOcorr(int ocorr) { this.ocorr = ocorr; } public int getDetec() { return detec; } public void setDetec(int detec) { this.detec = detec; } public int getRpn() { return rpn; } public void setRpn(int rpn) { this.rpn = rpn; } public int getResultado() { return seve_fmea * ocor_fmea * detec_fmea; } public int getResultado2() { return sever * ocorr * detec; }
}
Classe FmeaTableModel
public class FmeaTableModel extends AbstractTableModel { // Constantes representando o índice das colunas private static final int ID = 0; private static final int ORDEM = 1; private static final int OPERACAO = 2; private static final int FUNCAO_DO_PROCESSO = 3; private static final int REQUISITOS_PROCESSO = 4; private static final int MODO_DE_FALHA = 5; private static final int EFEITOS_POTENCIAL = 6; private static final int SEVE_FMEA = 7; private static final int CLASSIFICACAO = 8; private static final int CAUSA_MECANISMO = 9; private static final int SIX_MS = 10; private static final int CONTROLES_PREVENCAO = 11; private static final int OCOR_FMEA = 12; private static final int CONTROLES_DETECCAO = 13; private static final int DETEC_FMEA = 14; private static final int RPN_FMEA = 15; private static final int ACAO_RECOMENDADA = 16; private static final int NUMERO_RECLAMACAO = 17; private static final int RESPONSAVEL = 18; private static final int PRAZO = 19; private static final int STATUS = 20; private static final int SEVER = 21; private static final int OCORR = 22; private static final int DETEC = 23; private static final int RPN = 24; // Lista de Sócios a serem exibidos na tabela private List<Fmea> linhas; // Array com os nomes das colunas. private String[] colunas = new String[]{"ID", //0 "Ordem", //1 "Operação", //2 "Função do Processo", //3 "Requisitos do Processo", //4 "Modo de Falha Potencial", //5 "Efeito Potencial da Falha", //6 "SEVE", //7 "Classicação", //8 "Causa / Mecanismo", //9 "6 M'S", //10 "Controles de Prevenção", //11 "OCOR",//12 "Controles de Detecção", //13 "DETEC", //14 "RPN", //15 "Ações Recomendadas", //16 "Número da Reclamação", //17 "Responsável", //18 "Prazo", //19 "Status", //20 "Sever", //21 "Ocorr", //22 "Detec", //23 "RPN"};//24 // Cria um SocioTableModel sem nenhuma linha public FmeaTableModel() { linhas = new ArrayList<Fmea>(); } // Cria um SocioTableModel contendo a lista recebida por parâmetro public FmeaTableModel(List<Fmea> listaDeSocios) { linhas = new ArrayList<Fmea>(listaDeSocios); } @Override public int getRowCount() { return linhas.size(); } @Override public int getColumnCount() { return colunas.length; } @Override public String getColumnName(int columnIndex) { return colunas[columnIndex]; } ; @Override public Class<?> getColumnClass(int columnIndex) { switch (columnIndex) { case ID: return int.class; case ORDEM: return int.class; case OPERACAO: return int.class; case FUNCAO_DO_PROCESSO: return String.class; case REQUISITOS_PROCESSO: return String.class; case MODO_DE_FALHA: return String.class; case EFEITOS_POTENCIAL: return String.class; case SEVE_FMEA: return int.class; case CLASSIFICACAO: return int.class; case CAUSA_MECANISMO: return String.class; case SIX_MS: return String.class; case CONTROLES_PREVENCAO: return String.class; case OCOR_FMEA: return int.class; case CONTROLES_DETECCAO: return String.class; case DETEC_FMEA: return int.class; case RPN_FMEA: return int.class; case ACAO_RECOMENDADA: return String.class; case NUMERO_RECLAMACAO: return String.class; case RESPONSAVEL: return String.class; case PRAZO: return String.class; case STATUS: return String.class; case SEVER: return int.class; case OCORR: return int.class; case DETEC: return int.class; case RPN: return int.class; default: // Não deve ocorrer, pois só existem 4 colunas throw new IndexOutOfBoundsException("columnIndex out of bounds"); } } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { // apenas o campo "ATIVO" será editável return true; } @Override public Object getValueAt(int rowIndex, int columnIndex) { // Pega o sócio referente a linha especificada. Fmea fmea = linhas.get(rowIndex); switch (columnIndex) { case ID: return fmea.getId(); case ORDEM: return fmea.getOrdem(); case OPERACAO: return fmea.getOp(); case FUNCAO_DO_PROCESSO: return fmea.getFuncao_processo(); case REQUISITOS_PROCESSO: return fmea.getRequisito_processo(); case MODO_DE_FALHA: return fmea.getModo_falha(); case EFEITOS_POTENCIAL: return fmea.getEfeito_potencial(); case SEVE_FMEA: return fmea.getSeve_fmea(); case CLASSIFICACAO: return fmea.getClassificacao(); case CAUSA_MECANISMO: return fmea.getCausa_mecanismo(); case SIX_MS: return fmea.getSix_ms(); case CONTROLES_PREVENCAO: return fmea.getControles_prevencao(); case OCOR_FMEA: return fmea.getOcor_fmea(); case CONTROLES_DETECCAO: return fmea.getControles_deteccao(); case DETEC_FMEA: return fmea.getDetec_fmea(); case RPN_FMEA: return fmea.getResultado(); case ACAO_RECOMENDADA: return fmea.getAcao_recomendada(); case NUMERO_RECLAMACAO: return fmea.getNumero_reclamacao(); case RESPONSAVEL: return fmea.getResponsavel(); case PRAZO: return fmea.getPrazo(); case STATUS: return fmea.getStatus(); case SEVER: return fmea.getSever(); case OCORR: return fmea.getOcorr(); case DETEC: return fmea.getDetec(); case RPN: return fmea.getResultado2(); default: // Não deve ocorrer, pois só existem 4 colunas throw new IndexOutOfBoundsException("columnIndex out of bounds"); } } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { // Pega o sócio referente a linha especificada. Fmea fmea = linhas.get(rowIndex); switch (columnIndex) { case ID: fmea.setId((int) aValue); break; case ORDEM: fmea.setOrdem((int) aValue); break; case OPERACAO: fmea.setOp((int) aValue); break; case FUNCAO_DO_PROCESSO: fmea.setFuncao_processo((String) aValue); break; case REQUISITOS_PROCESSO: fmea.setRequisito_processo((String) aValue); break; case MODO_DE_FALHA: fmea.setModo_falha((String) aValue); break; case EFEITOS_POTENCIAL: fmea.setEfeito_potencial((String) aValue); break; case SEVE_FMEA: fmea.setSeve_fmea((int) aValue); break; case CLASSIFICACAO: fmea.setClassificacao((int) aValue); break; case CAUSA_MECANISMO: fmea.setCausa_mecanismo((String) aValue); break; case SIX_MS: fmea.setSix_ms((String) aValue); break; case CONTROLES_PREVENCAO: fmea.setControles_prevencao((String) aValue); break; case OCOR_FMEA: fmea.setOcor_fmea((int) aValue); break; case CONTROLES_DETECCAO: fmea.setControles_deteccao((String) aValue); break; case DETEC_FMEA: fmea.setDetec_fmea((int) aValue); break; // case RPN_FMEA: // fmea.setRpn_fmea((int) aValue); // break; case ACAO_RECOMENDADA: fmea.setAcao_recomendada((String) aValue); break; case NUMERO_RECLAMACAO: fmea.setNumero_reclamacao((String) aValue); break; case RESPONSAVEL: fmea.setResponsavel((String) aValue); break; case PRAZO: fmea.setPrazo((String) aValue); break; case STATUS: fmea.setStatus((String) aValue); break; case SEVER: fmea.setSever((int) aValue); break; case OCORR: fmea.setOcorr((int) aValue); break; case DETEC: fmea.setDetec((int) aValue); break; // case RPN: // fmea.setRpn((int) aValue); // break; default: // Não deve ocorrer, pois só existem 4 colunas throw new IndexOutOfBoundsException("columnIndex out of bounds"); } fireTableCellUpdated(rowIndex, columnIndex); // Notifica a atualização da célula } // Retorna o sócio referente a linha especificada public Fmea getSocio(int indiceLinha) { return linhas.get(indiceLinha); } /* Adiciona o sócio especificado ao modelo */ public void addSocio(Fmea socio) { // Adiciona o registro. linhas.add(socio); // Pega a quantidade de registros e subtrai 1 para // achar o último índice. A subtração é necessária // porque os índices começam em zero. int ultimoIndice = getRowCount() - 1; // Notifica a mudança. fireTableRowsInserted(ultimoIndice, ultimoIndice); } /* Remove o sócio da linha especificada. */ public void removeSocio(int indiceLinha) { // Remove o registro. linhas.remove(indiceLinha); // Notifica a mudança. fireTableRowsDeleted(indiceLinha, indiceLinha); } /* Adiciona uma lista de sócios no final da lista. */ public void addListaDeSocios(List<Fmea> socios) { // Pega o tamanho antigo da tabela, que servirá // como índice para o primeiro dos novos registros int indice = getRowCount(); // Adiciona os registros. linhas.addAll(socios); // Notifica a mudança. fireTableRowsInserted(indice, indice + socios.size()); } /* Remove todos os registros. */ public void limpar() { // Remove todos os elementos da lista de sócios. linhas.clear(); // Reporta a mudança. fireTableDataChanged(); } }
Classe FmeaTableModelTest
public class FmeaTableModelTest extends JFrame { private JTable tblFmea; private FmeaTableModel tableModel; public FmeaTableModelTest() { super("FmeaTableModelTest"); initialize(); } private void initialize() { setSize(1800, 1000); setDefaultCloseOperation(EXIT_ON_CLOSE); getContentPane().add(new JScrollPane(getTblfmeas())); } private JTable getTblfmeas() { if (tblFmea == null) { tblFmea = new JTable(); tblFmea.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); tblFmea.setModel(getTableModel()); tblFmea.setDefaultRenderer(TextAreaCellRenderer.class, new TextAreaCellRenderer()); ((DefaultTableCellRenderer) tblFmea.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(SwingConstants.CENTER); tblFmea.setForeground(Color.BLACK); tblFmea.setFont(new Font("arial", Font.BOLD, 14)); tblFmea.getTableHeader().setFont(new Font("arial", Font.BOLD, 14)); tblFmea.getTableHeader().setForeground(Color.blue); tblFmea.setRowHeight(55); tblFmea.setGridColor(Color.BLACK); tblFmea.setShowGrid(true); tblFmea.setColumnSelectionAllowed(true); tblFmea.setRowSelectionAllowed(true); tblFmea.setCellSelectionEnabled(true); // tblFmea.getColumnModel().getColumn(0).setMinWidth(0); // tblFmea.getColumnModel().getColumn(0).setMaxWidth(0); //// tblFmea.getColumnModel().getColumn(2).setMinWidth(0); //// tblFmea.getColumnModel().getColumn(2).setMaxWidth(0); tblFmea.getColumnModel().getColumn(3).setMinWidth(300); tblFmea.getColumnModel().getColumn(3).setMaxWidth(300); tblFmea.getColumnModel().getColumn(4).setMinWidth(300); tblFmea.getColumnModel().getColumn(4).setMaxWidth(300); tblFmea.getColumnModel().getColumn(5).setMinWidth(300); tblFmea.getColumnModel().getColumn(5).setMaxWidth(300); tblFmea.getColumnModel().getColumn(6).setMinWidth(300); tblFmea.getColumnModel().getColumn(6).setMaxWidth(300); tblFmea.getColumnModel().getColumn(7).setMinWidth(50); tblFmea.getColumnModel().getColumn(7).setMaxWidth(50); tblFmea.getColumnModel().getColumn(8).setMinWidth(100); tblFmea.getColumnModel().getColumn(8).setMaxWidth(100); tblFmea.getColumnModel().getColumn(9).setMinWidth(300); tblFmea.getColumnModel().getColumn(9).setMaxWidth(300); tblFmea.getColumnModel().getColumn(10).setMinWidth(100); tblFmea.getColumnModel().getColumn(10).setMaxWidth(100); tblFmea.getColumnModel().getColumn(11).setMinWidth(300); tblFmea.getColumnModel().getColumn(11).setMaxWidth(300); tblFmea.getColumnModel().getColumn(12).setMinWidth(50); tblFmea.getColumnModel().getColumn(12).setMaxWidth(50); tblFmea.getColumnModel().getColumn(13).setMinWidth(300); tblFmea.getColumnModel().getColumn(13).setMaxWidth(300); tblFmea.getColumnModel().getColumn(14).setMinWidth(50); tblFmea.getColumnModel().getColumn(14).setMaxWidth(50); tblFmea.getColumnModel().getColumn(15).setMinWidth(50); tblFmea.getColumnModel().getColumn(15).setMaxWidth(50); tblFmea.getColumnModel().getColumn(16).setMinWidth(300); tblFmea.getColumnModel().getColumn(16).setMaxWidth(300); tblFmea.getColumnModel().getColumn(17).setMinWidth(200); tblFmea.getColumnModel().getColumn(17).setMaxWidth(200); tblFmea.getColumnModel().getColumn(18).setMinWidth(100); tblFmea.getColumnModel().getColumn(18).setMaxWidth(100); tblFmea.getColumnModel().getColumn(19).setMinWidth(100); tblFmea.getColumnModel().getColumn(19).setMaxWidth(100); tblFmea.getColumnModel().getColumn(20).setMinWidth(100); tblFmea.getColumnModel().getColumn(20).setMaxWidth(100); tblFmea.getColumnModel().getColumn(21).setMinWidth(50); tblFmea.getColumnModel().getColumn(21).setMaxWidth(50); tblFmea.getColumnModel().getColumn(22).setMinWidth(50); tblFmea.getColumnModel().getColumn(22).setMaxWidth(50); tblFmea.getColumnModel().getColumn(23).setMinWidth(50); tblFmea.getColumnModel().getColumn(23).setMaxWidth(50); } return tblFmea; } private FmeaTableModel getTableModel() { if (tableModel == null) { tableModel = new FmeaTableModel(criaFmeas()); } return tableModel; } // cria uma lista com 5 sócios meramente ilustrativos private List<Fmea> criaFmeas() { List<Fmea> fmeas = new ArrayList<Fmea>(); for (int i = 1; i <= 5; i++) { Fmea fmea = new Fmea(); fmea.setId(1 + i); fmea.setOrdem(10 + i); fmea.setOp(1010 + i); // fmea.setFuncao_processo("Teste" + i); // fmea.setRequisito_processo("Teste" + i); // fmea.setModo_falha("Teste" + i); // fmea.setEfeito_potencial("Teste" + i); fmea.setSeve_fmea(7 + i); fmea.setClassificacao(5 + i); // fmea.setCausa_mecanismo("Teste" + i); // fmea.setSix_ms("Teste" + i); // fmea.setControles_prevencao("Teste" + i); fmea.setOcor_fmea(5 + i); // fmea.setControles_deteccao("Teste" + i); // fmea.setTbl_detetccao("Teste" + i); fmea.setDetec_fmea(5 + i); // fmea.setRpn_fmea(190 + i); // fmea.setAcao_recomendada("Teste" + i); // fmea.setNumero_reclamacao("Teste" + i); // fmea.setResponsavel("Teste" + i); // fmea.setPrazo("Teste" + i); // fmea.setStatus("Teste" + i); fmea.setSever(5 + i); fmea.setOcorr(7 + i); fmea.setDetec(3 + i); // fmea.setRpn(1 + i); fmeas.add(fmea); } return fmeas; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new FmeaTableModelTest().setVisible(true); } }); } }