vou tentar ser bem claro e rápido…
tenho JTextField’s “Nome” e “Fone”… a pessoa escreve no JFrame os dados, e aperta em salvar…
no mesmo JFrame tem um JTable. quando a pessoa aperta em SALVAR, os dados dos JTextFields vão pro JTable…
(sei que o código está horrível, galera, tô começando agora com essas paradas de interface gráfica, e tô meio perdido também com esse DefaultTableModel… agradeço qualquer ajuda valeuuu)
Veja como ficaria um exemplo bem simples de uma telinha de cadastro usando JTable:
importjava.awt.BorderLayout;importjava.awt.Component;importjava.awt.Container;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.util.ArrayList;importjava.util.List;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JTextField;importjavax.swing.ListSelectionModel;importjavax.swing.UIManager;importjavax.swing.event.ListSelectionEvent;importjavax.swing.table.AbstractTableModel;publicclassExemploextendsJFrame{privateclassContatoTableModelextendsAbstractTableModel{privatefinalString[]colunas=newString[]{"Nome","Telefone"};@OverridepublicintgetColumnCount(){returncolunas.length;}@OverridepublicStringgetColumnName(intcol){returncolunas[col];}@OverridepublicintgetRowCount(){returncontatos.size();}@OverridepublicObjectgetValueAt(intlin,intcol){if(lin>-1&&lin<contatos.size()){Contatocontato=contatos.get(lin);switch(col){case0:returncontato.getNome();case1:returncontato.getTelefone();}}returnnull;}}publicstaticvoidmain(String[]args){try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());Exemplotela=newExemplo();tela.setDefaultCloseOperation(EXIT_ON_CLOSE);tela.setLocationRelativeTo(null);tela.setVisible(true);}catch(Throwablet){t.printStackTrace();}}privateJTextFieldtextFieldNome;privateJTextFieldtextFieldTelefone;privateContatoTableModelcontatoTableModel;privateList<Contato>contatos=newArrayList<>();privateContatocontatoAtual=newContato();Exemplo(){super("Telinha de Exemplo");setMinimumSize(newDimension(800,600));Containercontainer=getContentPane();container.add(criarPainelCampos(),BorderLayout.NORTH);container.add(criarPainelTabela(),BorderLayout.CENTER);}privatevoidatualizarCampos(){Stringnome=contatoAtual.getNome();Stringtelefone=contatoAtual.getTelefone();textFieldNome.setText(nome);textFieldTelefone.setText(telefone);}privateComponentcriarPainelCampos(){textFieldNome=newJTextField();textFieldNome.setPreferredSize(newDimension(200,36));textFieldTelefone=newJTextField();textFieldTelefone.setPreferredSize(newDimension(200,36));JButtonbuttonNovo=newJButton("Novo");buttonNovo.setPreferredSize(newDimension(100,36));buttonNovo.addActionListener(event->novo());JButtonbuttonSalvar=newJButton("Salvar");buttonSalvar.setPreferredSize(newDimension(100,36));buttonSalvar.addActionListener(event->salvar());JPanelpanel=newJPanel(newFlowLayout(FlowLayout.CENTER));panel.add(buttonNovo);panel.add(newJLabel("Nome:"));panel.add(textFieldNome);panel.add(newJLabel("Telefone:"));panel.add(textFieldTelefone);panel.add(buttonSalvar);returnpanel;}privateComponentcriarPainelTabela(){contatoTableModel=newContatoTableModel();JTabletable=newJTable(contatoTableModel);table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);table.getSelectionModel().addListSelectionListener(event->selecionou(event));returnnewJScrollPane(table);}privatevoidnovo(){contatoAtual=newContato();contatos.add(contatoAtual);atualizarCampos();}privatevoidsalvar(){Stringnome=textFieldNome.getText();Stringtelefone=textFieldTelefone.getText();contatoAtual.setNome(nome);contatoAtual.setTelefone(telefone);contatoTableModel.fireTableDataChanged();}privatevoidselecionou(ListSelectionEventevent){if(event.getValueIsAdjusting()){return;}intlinha=event.getFirstIndex();contatoAtual=contatos.get(linha);atualizarCampos();}}