Sim, Livro é uma classe hipotética. Imagine que ela exista e foi implementada em algum lugar.
Ela é a classe que está sendo listada na tabela.
Sim, Livro é uma classe hipotética. Imagine que ela exista e foi implementada em algum lugar.
Ela é a classe que está sendo listada na tabela.
Pessoal, estou começando com jTables e minha aplicação ta cheia desses códigos espalhados:
public void consulta(Table){
Object[] dados = new Object[N];
DefaultTableModel model = (DefaultTableModel)tableMedico.getModel();
model.setNumRows(0);
String sql = "CONSULTA SQL";
try {
ConexaoBD con = new ConexaoBD();
PreparedStatement ps = con.conn.prepareStatement(sql);
ResultSet resultado = ps.executeQuery();
while(resultado.next()){
dados[0] = resultado.getString(1);
dados[1] = resultado.getString(2);
dados[2] = resultado.getString(3);
dados[3] = resultado.getString(4);
dados[4] = resultado.getString(5);
dados[5] = resultado.getString(6);
dados[6] = resultado.getString(7);
dados[6] = resultado.getString(....);
int[] tamCol = new int[7];
tamCol[0] = 5;
tamCol[1] = 70;
tamCol[2] = 35;
tamCol[3] = 25;
tamCol[4] = 10;
tamCol[5] = 60;
tamCol[6] = 60;
tamCol[6] = ...................;
for(int i=0; i < tableMedico.getColumnCount(); i++) {
TableColumn column = tableMedico.getColumnModel().getColumn(i);
column.setMinWidth(tamCol[i]);
column.setPreferredWidth(tamCol[i]);
}
// alinhamento
DefaultTableCellRenderer esquerda = new DefaultTableCellRenderer();
DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
DefaultTableCellRenderer direita = new DefaultTableCellRenderer();
esquerda.setHorizontalAlignment(SwingConstants.LEFT);
centralizado.setHorizontalAlignment(SwingConstants.CENTER);
direita.setHorizontalAlignment(SwingConstants.RIGHT);
tableMedico.getColumnModel().getColumn(0).setCellRenderer(esquerda);
tableMedico.getColumnModel().getColumn(1).setCellRenderer(esquerda);
model.addRow(dados);
}
} catch (SQLException ex) {
Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
O que realmente eu acho PORCO!
Porém é a forma que eu estou achando mais simples…
Estou tentando entender o exemplo do Vinni, mas tá um pouco complicado, alguém teria um exemplo prático para me mandar e eu ver?Acho que ficaria mais fácil para entender!
Obrigado à todos.
Bom dia a todos!
ViniGodoi achei seu post procurando na net sobre JTable, e está me ajudando muito, parabéns pelo exemplo. Entretanto, estou com uma dúvida de como atualizar o Jtable pois tenho a seguinte situação:
Tenho um Jtable com os dados na tela principal, essa tela só mostra os dados, para adicionar ou editar dados eu clico num botão nessa tela e outra tela abre com os campos para edição ou criação de um novo registro. Bem, quando salvo o registro, preciso que o JTable da tela de trás seja atualizado.
Andei pesquisando sobre o padrão Observer, mas não estou conseguindo fazer o que preciso. Será que é possível vc postar um breve exemplo de como resolver esse problema da forma mais correta para o meu caso?
Abraço!
No seu caso não é necessário usar um Observer. Simplesmente abra um JDialog, e faça a comunicação entre as duas janelas através de passagem de parâmetros, como nesse exemploa aqui:
http://www.guj.com.br/posts/list/55710.java#292687
Desculpe não responder antes, estava com outras atividades…
Perfeito!!!
Acabei de fazer a modificação de acordo com o exemplo que vc passou e funcionou perfeitamente.
ViniGodoy obrigado pela ajuda!
ViniGodoy, bom dia!
Agora estou com um problema que me deixou surpreso. Estou montando um jtable e nesse caso tenho que aplicar uma barra de rolagem horizontal, pois o tamanho dele não comporta
todas as colunas que preciso mostrar. O problema é que quando eu rolo a barra horizontal, o header fica desformatado nas colunas do final, como se não renderizasse corretamente, segue os fragmentos para melhor compreensão.
Esqueci de postar o fragmento de código da mensagem acima:
try {
DefaultTableCellRenderer rendererCentro = new DefaultTableCellRenderer();
rendererCentro.setHorizontalAlignment(SwingConstants.CENTER);
DefaultTableCellRenderer rendererDireita = new DefaultTableCellRenderer();
rendererDireita.setHorizontalAlignment(SwingConstants.RIGHT);
DefaultTableCellRenderer rendererEsquerda = new DefaultTableCellRenderer();
rendererEsquerda.setHorizontalAlignment(SwingConstants.LEFT);
[b]JTableHeader header = jTable.getTableHeader();
header.setPreferredSize(new Dimension(0, 35));
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTable.setAutoscrolls(true);[/b]
TableColumnModel modeloDaColuna = jTable.getColumnModel();
[quote=ViniGodoy]Só pra constar. Eu já fui clipeiro e admito que no começo dá muita dificuldade em entender os conceitos de OO e do Java. E, para ser bem sincero, o JTextField com formatação do Java não chega aos pés do existente no clipper.
O que você deve entender é que nos métodos do AbstractTableModel você estará dizendo ao JTable o que ela deve desenhar. Cada método, diz ao java uma coisa diferente.
Por exemplo. Considere que você vai escrever um TableModel para mostrar livros na tela, e quer exibir 2 colunas, uma para o autor (coluna 0) e outra para o título (coluna 1).
public class LivrosTableModel extends AbstractTableModel {
private static final int COL_AUTOR = 0;
private static final int COL_TITULO = 1;
private List<Livro> valores;
//Esse é um construtor, que recebe a nossa lista de livros
public TitulosTableModel(List<Livro> valores) {
this.valores = new ArrayList<Livro>(valores);
}
public int getRowCount() {
//Quantas linhas tem sua tabela? Uma para cada item da lista.
return valores.size();
}
public int getColumnCount() {
//Quantas colunas tem a tabela? Nesse exemplo, só 2.
return 2;
}
public String getColumnName(int column) {
//Qual é o nome das nossas colunas?
if (column == COL_AUTOR) return "Autor";
if (column == COL_TITULO) return "Título";
return ""; //Nunca deve ocorrer
}
public Object getValueAt(int row, int column) {
//Precisamos retornar o valor da coluna column e da linha row.
Livro titulo = valores.get(row);
if (column == COL_AUTOR) return titulo.getTitulo();
else if (column == COL_TITULO) return titulo.getAutor().getNome();
return ""; //Nunca deve ocorrer
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//Vamos alterar o valor da coluna columnIndex na linha rowIndex com o valor aValue passado no parâmetro.
//Note que vc poderia alterar 2 campos ao invés de um só.
if (columnIndex== COL_TITULO) titulo.setTitulo(aValue.toString());
else if (columnIndex== COL_AUTOR) titulo.getAutor().setNome(aValue.toString());
}
public Class<?> getColumnClass(int columnIndex) {
//Qual a classe das nossas colunas? Como estamos exibindo texto, é string.
return String.class;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
//Indicamos se a célula da rowIndex e da columnIndex é editável. Nossa tabela toda é.
return true;
}
//Já que esse tableModel é de livros, vamos fazer um get que retorne um livro inteiro.
//Isso elimina a necessidade de chamar o getValueAt() nas telas.
public Livro get(int row) {
return valores.get(row);
}
}
Depois, para usar esse model vc só faz:
suaTable.setModel(new LivrosTableModel(listaDeLivros));
O que o Java faz na hora de desenhar a tabela? O objeto JTable:
O que as vezes demora a cair a ficha é notar que seus métodos estão respondendo ao Java. Quem chamará um método como
public Object getValueAt(int row, int column) é o JTable, enquanto está se desenhando.
Ele que dirá "Ei, quero desenhar o objeto da linha 1, coluna 3, que valor você tem pra mim aí?"
Você vai notar, depois que aprender a usar o AbstractTableModel, que o trabalho que você tem hoje no Default é enorme. Parece ainda maior se você considerar a existência de modelos ainda mais automáticos, como o do Mark. O seu código atual também fica muito desorganizado. A escrita da tabela se mistura ao código da interface gráfica. Estendendo do abstract, tudo fica separadinho:
Desenho é com a JTable
Dados é com o model
Lógica da interface é na Tela.
Desculpe o tom provocativo do post anterior. A idéia era realmente te irritar. Nem que vc se motivasse novamente a aprender o model, só pra depois jogar na minha cara. :lol:
O esforço realmente vale a pena.[/quote]
Fiz esse exemplo do Vini, mas não consigo fazer mostrar o nome das Colunas quando mostra a tabela.
Alguém saberia dizer o que pode estar acontecendo, pq pelo que entendi o método getColumnName() é que adiciona o nome as colunas. E ele é chamado e os valores são retornados(vi pelo debug), mas quando aparece a tabela, aparece sem nome algum.
Você colocou sua tabela dentro de um JScrollPane? É necessário coloca-la para que o nome das colunas apareça.
Que rápido Vini
Hehe, não, coloquei em um JPanel.
Era isso mesmo, com JScrollPane funcionou.
Valeu Vini, muito boa essa dica. Realmente DefaultTableModel é bem mais chato de trabalhar.
O mais engraçado é que foi rápido e coincidência. Eu cheguei em casa, olhei os e-mails e a primeira mensagem era a desse tópico.
Bom, sei que é uma duvida meio tosca, mas é que eu to passando meio mal pra pegar a implementação de um modelo próprio pra tabela.
Até que peguei com DefaultTableModel mais realmente o código fica meio confuso.
Se alguém puder só explicar melhor como ficaria um exemplo dessa clase <Livro>
É que eu to tendo alguns erros quando tento fazer a minha tabela aqui. :?
Agradeço desde já !
Bom, sei que é uma duvida meio tosca, mas é que eu to passando meio mal pra pegar a implementação de um modelo próprio pra tabela.
Até que peguei com DefaultTableModel mais realmente o código fica meio confuso.
Se alguém puder só explicar melhor como ficaria um exemplo dessa clase
É que eu to tendo alguns erros quando tento fazer a minha tabela aqui. :?
Agradeço desde já !
[code]public final class Livro {
private String titulo;
private Autor autor;
public Livro(String titulo, Autor autor) {
setTitulo(titulo);
setAutor(autor);
}
public void setTitulo(String titulo) {
if (titulo == null)
throw new IllegalArgumentException(“O título não pode ser nulo!”);
this.titulo = titulo.trim();
}
public String getTitulo() {
return titulo;
}
public void setAutor(Autor autor) {
if (autor == null)
throw new IllegalArgumentException(“O autor não pode ser nulo!”);
this.autor = autor;
}
public Autor getAutor() {
return autor;
}
}
[/code]
E a classe Autor:
public final class Autor {
private String nome;
private String descricao;
public Autor(String nome, String descricao) {
setNome(nome);
setDescricao(descricao);
}
public void setNome(String nome) {
if (nome == null)
throw new IllegalArgumentException("O nome não pode ser nulo!");
this.nome = nome.trim();
}
public void getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
if (descricao == null)
throw new IllegalArgumentException("A descricao não pode ser nula!");
this.descricao = descricao.trim();
}
public void getNome() {
return nome;
}
}
Pooooow brigadão cara ! _
Era isso msm que queria !
Tudo pela morte do DefaultTableModel.
Oi VinnyGodoy.
Eu sou novo em Java e estou tentando usar o AbstractTableModel.
Atualmente eu consigo obter o objeto se eu clicar duas vezes, porém, se eu reorganizo a tabela clicando em uma coluna, e clico duas vezes novamente ele me retorna o primeiro item de quando eu não tinha reorganizado.
Esta aqui é minha AbstractTableModel:
public class AlunoTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private static final int COL_nome_aluno = 0;
private static final int COL_endereco_aluno = 1;
private static final int COL_tel_aluno = 2;
private static final int COL_cel_aluno = 3;
private static final int COL_atestado_aluno = 4;
private static final int COL_dtNasc_aluno = 5;
private static final int COL_dtDePgto_aluno = 6;
private static final int COL_planoPagamento = 7;
private List<Aluno> alunos;
public AlunoTableModel(List<Aluno> _alunos) {
this.alunos = new ArrayList<Aluno>(_alunos);
}
public int getRowCount() {
return alunos.size();
}
public int getColumnCount() {
return 8;
}
public String getColumnName(int column) {
if (column == COL_nome_aluno) return "Nome";
if (column == COL_endereco_aluno) return "Endereço";
if (column == COL_tel_aluno) return "Telefone";
if (column == COL_cel_aluno) return "Celular";
if (column == COL_atestado_aluno) return "Atestado";
if (column == COL_dtNasc_aluno) return "Data de Nascimento";
if (column == COL_dtDePgto_aluno) return "Dia de Pagamento";
if (column == COL_planoPagamento) return "Plano de Pagamento";
return "";
}
public Object getValueAt(int row, int column) {
Aluno aluno = alunos.get(row);
if (column == COL_nome_aluno) return aluno.getNome_aluno();
else if (column == COL_endereco_aluno) return aluno.getEndereco_aluno();
else if (column == COL_tel_aluno) return aluno.getTel_aluno();
else if (column == COL_cel_aluno) return aluno.getCel_aluno();
else if (column == COL_atestado_aluno) return aluno.isAtestado_aluno();
else if (column == COL_dtNasc_aluno) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = null;
try {
d1 = f.parse(aluno.getDtNasc_aluno().toString());
} catch (Exception e) {
e.printStackTrace();
}
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
return format.format(d1);
}
else if (column == COL_dtDePgto_aluno) return aluno.getDtDePgto_aluno();
else if (column == COL_planoPagamento) return aluno.getPlanoPagamento();
throw new IllegalArgumentException("Coluna Inválida");
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Aluno aluno = new Aluno();
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
if (columnIndex == COL_nome_aluno)
aluno.setNome_aluno(aValue.toString());
else if (columnIndex == COL_endereco_aluno)
aluno.setEndereco_aluno(aValue.toString());
else if (columnIndex == COL_tel_aluno)
aluno.setTel_aluno(aValue.toString());
else if (columnIndex == COL_cel_aluno)
aluno.setCel_aluno(aValue.toString());
else if (columnIndex == COL_dtNasc_aluno)
try {
aluno.setDtNasc_aluno(format.parse(aValue.toString()));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
else if (columnIndex == COL_dtDePgto_aluno)
aluno.setDtDePgto_aluno(Integer.parseInt(aValue.toString()));
else if (columnIndex == COL_planoPagamento)
aluno.setPlanoPagamento(aValue.toString());
}
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 4)
return Boolean.class;
if (columnIndex == 6)
return Integer.class;
return String.class;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Aluno get(int row) {
return alunos.get(row);
}
}
Pra obter o objeto eu usei o método abaixo:
public Aluno getAlunoDaLinhaSelecionada(List<Aluno> alunosList) {
if (table.getSelectedRow() == -1)
return null;
return alunosList.get(table.getSelectedRow());
}
e aqui está o evento do duplo clique:
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
if (arg0.getClickCount() == 2) {
Aluno aluno = VPesquisarAluno.this.getAlunoDaLinhaSelecionada(TodosAlunos);
if (pesquisar == true) {
VAluno vAluno = new VAluno(false, true, true, true, aluno);
vAluno.setVisible(true);
vAluno.setLocationRelativeTo(null);
} else if (alterar == true) {
VAluno vAluno = new VAluno(false, true, false, false, aluno);
vAluno.setVisible(true);
vAluno.setLocationRelativeTo(null);
} else if (excluir == true) {
VAluno vAluno = new VAluno(false, false, true, false, aluno);
vAluno.setVisible(true);
vAluno.setLocationRelativeTo(null);
} else if (pgto == true) {
VPgto vPgto = new VPgto();
vPgto.setVisible(true);
vPgto.setLocationRelativeTo(null);
}
}
}
});
se puder ajudar, ou ao menos responder, agradeço desde já.
Consegui encontrar este post (do próprio ViniGodoy) sobre meu problema.
[quote=ViniGodoy]int viewIndex = jTable1.getSelectedRow(); //índice do que está sendo exibido na tabela
int modelIndex = jTable1.convertRowIndexToModel(viewIndex); //Índice do conteúdo dentro do model
Cliente c = listCliente.get(modelIndex);
Por essas e outras, é bom ler o javadoc. E também os Tutoriais, e não programar por tentativa e erro.
E claro, [color=red]não usar o DefaultTableModel.[/color][/quote]
Segue a resolução caso mais alguém precise:
public Aluno getAlunoDaLinhaSelecionada() {
if (table.getSelectedRow() == -1)
return null;
int viewIndex = table.getSelectedRow(); //índice do que está sendo exibido na tabela
int modelIndex = table.convertRowIndexToModel(viewIndex); //Índice do conteúdo dentro do model
return TodosAlunos.get(modelIndex);
}
suaTable.setModel(new LivrosTableModel(listaDeLivros));
nesta linha a "listaDeLivros " seria oque ?? que vc esta passando para a tabela??
[quote=souza_lucas]suaTable.setModel(new LivrosTableModel(listaDeLivros));
nesta linha a "listaDeLivros " seria oque ?? que vc esta passando para a tabela??[/quote]
Um List, contendo os livros que você quer que sejam carregados na sua tabela.
Provavelmente essa lista teria sido carregada do seu DAO.
boa noite… sei que o tópico é antigo mas a pergunta é pertinente ao assunto…
fiz todo codigo aqui… sem erros no depurador…
mas não to entendendo justamente o método para alterar a jTable dentro do jPanel
o que vai dentro da nova instancia MontadoraTableModel ??
onde coloco esse codigo no jPanel? logo apos o initComponents()?
public MontadoraForm() {
initComponents();
só ta faltando isso pra eu botar esse treco pra rodar… e não usar o DefaultTableModel que até funcinou de primeira… mas por recomendação to querendo evitar de usar
segue a classe de entidade de banco de dados:
package oficina;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Andre
*/
@Entity
@Table(name = "MONTADORA")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Montadora_DB.findAll", query = "SELECT m FROM Montadora_DB m"),
@NamedQuery(name = "Montadora_DB.findById", query = "SELECT m FROM Montadora_DB m WHERE m.id = :id"),
@NamedQuery(name = "Montadora_DB.findByMarca", query = "SELECT m FROM Montadora_DB m WHERE m.marca = :marca"),
@NamedQuery(name = "Montadora_DB.findByService", query = "SELECT m FROM Montadora_DB m WHERE m.service = :service"),
@NamedQuery(name = "Montadora_DB.findByUsuario", query = "SELECT m FROM Montadora_DB m WHERE m.usuario = :usuario"),
@NamedQuery(name = "Montadora_DB.findBySenha", query = "SELECT m FROM Montadora_DB m WHERE m.senha = :senha"),
@NamedQuery(name = "Montadora_DB.findByTel", query = "SELECT m FROM Montadora_DB m WHERE m.tel = :tel"),
@NamedQuery(name = "Montadora_DB.findByLixo", query = "SELECT m FROM Montadora_DB m WHERE m.lixo = :lixo")})
public class Montadora_DB implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID")
private Integer id;
@Basic(optional = false)
@Column(name = "MARCA")
private String marca;
@Column(name = "SERVICE")
private String service;
@Column(name = "USUARIO")
private String usuario;
@Column(name = "SENHA")
private String senha;
@Column(name = "TEL")
private String tel;
@Basic(optional = false)
@Column(name = "LIXO")
private short lixo;
public Montadora_DB() {
}
public Montadora_DB(Integer id) {
this.id = id;
}
public Montadora_DB(Integer id, String marca, short lixo) {
this.id = id;
this.marca = marca;
this.lixo = lixo;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getService() {
return service;
}
public void setService(String service) {
this.service = service;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public short getLixo() {
return lixo;
}
public void setLixo(short lixo) {
this.lixo = lixo;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Montadora_DB)) {
return false;
}
Montadora_DB other = (Montadora_DB) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "oficina.Montadora_DB[ id=" + id + " ]";
}
}
segue a classe MontadoraTableModel
package oficina;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Andre
*/
public class MontadoraTableModel extends AbstractTableModel {
private static final int NOME = 0;
private static final int TELEFONE = 1;
private static final int SERVICE = 2;
private static final int USUARIO = 3;
private static final int SENHA = 4;
private static final int ID = 5;
private static final int LIXO = 6;
private List<Montadora_DB> montadora;
//Esse é um construtor, que recebe a nossa lista de livros
public void MontadoraTableModel(List<Montadora_DB> _montadora) {
this.montadora = new ArrayList<Montadora_DB>(_montadora);
}
public int getRowCount() {
//Quantas linhas tem sua tabela? Uma para cada item da lista.
return montadora.size();
}
public int getColumnCount() {
//Quantas colunas tem a tabela? Nesse exemplo, só 2.
return 7;
}
public String getColumnName(int column) {
//Qual é o nome das nossas colunas?
switch (column) {
case NOME:
return "MONTADORA";
case TELEFONE:
return "TELEFONE";
case SERVICE:
return "SERVICE";
case USUARIO:
return "USUARIO";
case SENHA:
return "SENHA";
case ID:
return "ID";
case LIXO:
return "LIXO";
}
/*
if (column == NOME) {
return "MONTADORA";
}
if (column == TELEFONE) {
return "TELEFONE";
}
if (column == SERVICE) {
return "TELEFONE";
}
if (column == USUARIO) {
return "USUARIO";
}
if (column == SENHA) {
return "SENHA";
}
return ""; //Nunca deve ocorrer */
throw new IllegalArgumentException("GetColumnName Inválido!");
}
public Object getValueAt(int row, int column) {
//Precisamos retornar o valor da coluna column e da linha row.
Montadora_DB montadora = this.montadora.get(row);
/*switch (column) {
case NOME:
return montadora.getMarca();
case TELEFONE:
return montadora.getTel();
case SERVICE:
return montadora.getService();
case USUARIO:
return montadora.getUsuario();
case SENHA:
return montadora.getSenha();
case ID:
return montadora.getId();
case LIXO:
return montadora.getLixo();
}
*/
if (column == NOME) {
return montadora.getMarca();
} else if (column == TELEFONE) {
return montadora.getTel();
} else if (column == SERVICE) {
return montadora.getService();
} else if (column == USUARIO) {
return montadora.getUsuario();
} else if (column == SENHA) {
return montadora.getSenha();
} else if (column == ID) {
return montadora.getId();
} else if (column == LIXO) {
return montadora.getLixo();
}
//return ""; //Nunca deve ocorrer
throw new IllegalArgumentException("Coluna Inválida");
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Montadora_DB montadora = this.montadora.get(rowIndex);
//Vamos alterar o valor da coluna columnIndex na linha rowIndex com o valor aValue passado no parâmetro.
//Note que vc poderia alterar 2 campos ao invés de um só.
if (columnIndex == NOME) {
montadora.setMarca(aValue.toString());
} else if (columnIndex == TELEFONE) {
montadora.setTel(aValue.toString());
} else if (columnIndex == SERVICE) {
montadora.setService(aValue.toString());
} else if (columnIndex == USUARIO) {
montadora.setUsuario(aValue.toString());
} else if (columnIndex == SENHA) {
montadora.setSenha(aValue.toString());
} //else if (columnIndex == ID) {
// montadora.setId(aValue.toString());
//} else if (columnIndex == LIXO) {
// montadora.setLixo(aValue.toString());
//}
/*switch (columnIndex) {
case NOME:
montadora.setMarca(aValue.toString());
case TELEFONE:
montadora.setTel(aValue.toString());
case SERVICE:
montadora.setService(aValue.toString());
case USUARIO:
montadora.setUsuario(aValue.toString());
case SENHA:
montadora.setSenha(aValue.toString());
case ID:
//montadora.setId(aValue.toString());
case LIXO:
//montadora.setLixo(aValue.toString());
}*/
throw new IllegalArgumentException("Coluna Inválida");
}
public Class<?> getColumnClass(int columnIndex) {
//Qual a classe das nossas colunas? Como estamos exibindo texto, é string.
/*switch (columnIndex) {
case 5:
return Integer.class;
case 6:
return Short.class;
}*/
return String.class;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
//Indicamos se a célula da rowIndex e da columnIndex é editável. Nossa tabela toda é.
return true;
}
//Já que esse tableModel é de livros, vamos fazer um get que retorne um livro inteiro.
//Isso elimina a necessidade de chamar o getValueAt() nas telas.
public Montadora_DB get(int row) {
return montadora.get(row);
}
}