Ajuda para Entender TableModel
Boa tarde amigos.
Estou tentando entender como faço para implementar a TableModel, então criei uma classe assim
ai na tela que tem a jtable eu coloquei assim pra preencher a tabela com os dados
tela da tabela (sem cabeçalho)
https://imgur.com/5p43paI
Ele está trazendo os dados, porém, não sei como e onde implementar pra ele trazer também o cabeçalho, eu sei que na classe EstadoTableModel, eu alterei pro cabeçalho que tem minha tabela. porém não sei mais progredir, alguém poderia dar uma explicação. (não vou negar, tentei sim usar defaulttablemodel, mas quando fui procurar ajuda e muita gente falando mal dele, logo larguei e to quebrando a cabeça aki no TableModel).
Um muito obrigado.
Christian
Estou tentando entender como faço para implementar a TableModel, então criei uma classe assim
package controler;
import java.util.*;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import model.EstadoBean;
public class EstadoTableModel extends AbstractTableModel{
public static final int COL_ID = 0;
public static final int COL_UF = 1;
public static final int COL_NOME = 2;
private List<EstadoBean> listarEstados;
public EstadoTableModel(List<EstadoBean> l){
this.listarEstados = new ArrayList<EstadoBean>(l);
}
public int getRowCount(){
return listarEstados.size();
}
public int getColumnCount(){
return 3;
}
public Object getValueAt(int linhas, int colunas){
EstadoBean estado = this.listarEstados.get(linhas);
if(colunas == COL_ID) return estado.getId();
if(colunas == COL_UF) return estado.getUf();
if(colunas == COL_NOME) return estado.getNome();
return "";
}
public String getColumnName(int colunas){
if(colunas == COL_ID) return "Id";
if(colunas == COL_UF) return "Uf";
if(colunas == COL_NOME) return "Nome";
return "";
}
public EstadoBean get(int linhas){
return listarEstados.get(linhas);
}
}
ai na tela que tem a jtable eu coloquei assim pra preencher a tabela com os dados
package view;
import javax.swing.JLabel;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import java.awt.Font;
import model.EstadoDao;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.awt.event.ActionEvent;
import javax.swing.JTable;
import controler.EstadoTableModel;
import javax.swing.ListSelectionModel;
@SuppressWarnings("serial")
public class jPnl_Estado extends JPanel {
JTable tabela;
public jPnl_Estado() {
initComponents();
preencher_Tabela();
}
private void preencher_Tabela() {
try {
tabela.setModel(new EstadoTableModel(EstadoDao.ListaEstado()));
Ajusta_Tamanho_Coluna();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void Ajusta_Tamanho_Coluna(){
tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tabela.getColumnModel().getColumn(0).setPreferredWidth(30);
tabela.getColumnModel().getColumn(1).setPreferredWidth(30);
tabela.getColumnModel().getColumn(2).setPreferredWidth(240);
}
private void initComponents() {
setLayout(null);
tabela = new JTable();
tabela.setBounds(200, 62, 550, 500);
add(tabela);
JLabel lblEstado = new JLabel("Cadastro de Estados");
lblEstado.setFont(new Font("Tahoma", Font.BOLD, 12));
lblEstado.setBounds(10, 11, 224, 14);
add(lblEstado);
JButton btnFechar = new JButton("Fechar");
btnFechar.setBorder(null);
btnFechar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Agenda.mnCadastro.setEnabled(true);
Agenda.mnRelatorio.setEnabled(true);
Agenda.mnAjuda.setEnabled(true);
Agenda.cardLayout.show (Agenda.painelBase, "principal");
}
});
btnFechar.setOpaque(false);
btnFechar.setMnemonic('F');
btnFechar.setBounds(10, 228, 108, 23);
add(btnFechar);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
//Screen width = d.width
//Screen height = d.height
JSeparator separator = new JSeparator();
separator.setBounds(1, 26, d.width, 1);
add(separator);
JButton btnNewButton = new JButton("Pesquisar");
btnNewButton.setBorder(null);
btnNewButton.setMnemonic('P');
btnNewButton.setOpaque(false);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnNewButton.setBounds(10, 58, 108, 23);
add(btnNewButton);
JButton btnNewButton_1 = new JButton("Visualisar");
btnNewButton_1.setBorder(null);
btnNewButton_1.setOpaque(false);
btnNewButton_1.setMnemonic('V');
btnNewButton_1.setBounds(10, 92, 108, 23);
add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("Incluir");
btnNewButton_2.setBorder(null);
btnNewButton_2.setOpaque(false);
btnNewButton_2.setMnemonic('I');
btnNewButton_2.setBounds(10, 126, 108, 23);
add(btnNewButton_2);
JButton btnNewButton_3 = new JButton("Alterar");
btnNewButton_3.setBorder(null);
btnNewButton_3.setMnemonic('A');
btnNewButton_3.setOpaque(false);
btnNewButton_3.setBounds(10, 160, 108, 23);
add(btnNewButton_3);
JButton btnNewButton_4 = new JButton("Excluir");
btnNewButton_4.setBorder(null);
btnNewButton_4.setOpaque(false);
btnNewButton_4.setMnemonic('E');
btnNewButton_4.setBounds(10, 194, 108, 23);
add(btnNewButton_4);
}
}
tela da tabela (sem cabeçalho)
https://imgur.com/5p43paI
Ele está trazendo os dados, porém, não sei como e onde implementar pra ele trazer também o cabeçalho, eu sei que na classe EstadoTableModel, eu alterei pro cabeçalho que tem minha tabela. porém não sei mais progredir, alguém poderia dar uma explicação. (não vou negar, tentei sim usar defaulttablemodel, mas quando fui procurar ajuda e muita gente falando mal dele, logo larguei e to quebrando a cabeça aki no TableModel).
Um muito obrigado.
Christian
Eder Cristian
Curtidas 0
Respostas
Eder Cristian
05/08/2018
Boa madrugada amigos. Estou até agora tentando resolver meu problema, achei um rumo para tentar resolver, eu utilizo um cardlayout que tem 3 jpanel nele, e este tablemodel está e um jpanel, porém ele não tem um jframe par eu poder utilizar este comando getContentPane().add(new JScrollPane(getTblEstado())); para poder aparecer o cabeçalho.<br />
<br />
<br />
Venho humildemente perguntar, tem como eu colocar algo parecido disso em uma classe que se extende de um jpanel ?<br />
<br />
desde já agradeço<br />
<br />
Christian
<br />
<br />
Venho humildemente perguntar, tem como eu colocar algo parecido disso em uma classe que se extende de um jpanel ?<br />
<br />
desde já agradeço<br />
<br />
Christian
GOSTEI 0