2 - Uma tela pra apresentar a JTable com os objetos:
importjava.awt.BorderLayout;importjava.awt.Container;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;importjavax.swing.JFrame;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.UIManager;importjavax.swing.table.AbstractTableModel;@SuppressWarnings("serial")publicclassExemploextendsJFrame{publicstaticvoidmain(String[]args){try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());Exemplojanela=newExemplo();janela.setDefaultCloseOperation(EXIT_ON_CLOSE);janela.setLocationRelativeTo(null);janela.setVisible(true);}catch(Throwablet){t.printStackTrace();}}privateclassMeuTableModelextendsAbstractTableModel{privateString[]colunas=newString[]{"SEVERIDADE","OCORRENCIA","DETECCAO","RESULTADO"};// a JTable chama este método para saber quantas colunas ela possui@OverridepublicintgetColumnCount(){returncolunas.length;}// a JTable chama este método para saber o nome de cada coluna@OverridepublicStringgetColumnName(intcol){returncolunas[col];}// a JTable chama este método para saber quantas linhas ela possui@OverridepublicintgetRowCount(){returnlistaDeObjetos.size();}// a JTable chama este método para saber se a célula informada é editável ou não@OverridepublicbooleanisCellEditable(introw,intcol){returncol!=3;}// a JTable chama este método quando a célula informada é editada@OverridepublicvoidsetValueAt(Objectvalue,introw,intcol){if(row<listaDeObjetos.size()){Objetoobjeto=listaDeObjetos.get(row);intvalorInteiro=Integer.parseInt((String)value);switch(col){case0:// SEVERIDADEobjeto.setSeveridade(valorInteiro);break;case1:// OCORRENCIAobjeto.setOcorrencia(valorInteiro);break;case2:// DETECCAOobjeto.setDeteccao(valorInteiro);break;}fireTableDataChanged();}}// a JTable chama este método para apresentar o valor da célula informada@OverridepublicObjectgetValueAt(introw,intcol){if(row<listaDeObjetos.size()){Objetoobjeto=listaDeObjetos.get(row);switch(col){case0:// SEVERIDADEreturnobjeto.getSeveridade();case1:// OCORRENCIAreturnobjeto.getOcorrencia();case2:// DETECCAOreturnobjeto.getDeteccao();case3:// RESULTADOreturnobjeto.getResultado();}}returnnull;}}privateMeuTableModelmeuTableModel;privateList<Objeto>listaDeObjetos;publicExemplo(){super("Exemplo");listaDeObjetos=criarListaDeObjetos();meuTableModel=newMeuTableModel();JTabletable=newJTable(meuTableModel);JScrollPanescrollPane=newJScrollPane(table);Containercontents=getContentPane();contents.setLayout(newBorderLayout());contents.add(scrollPane,BorderLayout.CENTER);setSize(640,480);}privateList<Objeto>criarListaDeObjetos(){List<Objeto>objetos=newArrayList<>();Randomrandom=newRandom();for(inti=0;i<100000;i++){Objetoobjeto=newObjeto();objeto.setSeveridade(random.nextInt(100));objeto.setOcorrencia(random.nextInt(100));objeto.setDeteccao(random.nextInt(100));objetos.add(objeto);}returnobjetos;}}
O único problema é que vai zerar caso algum for nulo/em branco
R
Rafaaw
Bom dia Staroski, Eu comecei fazer meu model, mas acabei me perdendo um pouco por ser 24 colunas… Ficou um pouco complicado pq eu nunca tinha feito um. Mas obrigado pela dica e sim, realmente ficaria muito bom. Vou tentar da mais uma mexida no meu model pra tenta implementar oq você me disse.
R
Rafaaw
Bom dia Jacob tudo bom? Cara eu tinha feito dessa maneira, mas pensei q não era a correta por ter dado 0 nas colunas que n tinham conteudo. e como eu estou puxando 100 linhas nessa jtable, fica complicado. você saberia me informar se é possível não retornar os 0?
jacoboliveira
tu podia fazer assim ao invés de iniciar com 0 inicializava com 1
Dai na hora da multiplicação ele não zera só considera os valores que não são nulos na hora da multiplicação. Não sei se era isso que você estava se referindo
R
Rafaaw
pior q não, eu precisava q fosse c null jacob
R
Rafaaw
mas talvez da maneira c 0 seja util. eu preciso agora é descobri uma forma em que essas colunas fosse alterada ja multiplicava automaticamente