jtable
boa noite, sou iniciante em java e estou com o seguinte problema. Na tentativa de listar em um JTable os registros da tabela clientes do meu banco, recebo uma mensagem de erro quando o numero de registros é maior que o numero de linhas configurado no JTable nas propriedades model do JTable. Alguem pode me ajudar ?
Lemos Ltda
Curtidas 0
Respostas
David Alberto
13/11/2012
Você pode colocar o codigo do erro
GOSTEI 0
David Alberto
13/11/2012
Exitem duas coisas.
Você está usando o DefaultTableModel ou reconfigurou o Tablemodel?
qual metodo você usou para preecher a tabela.
Metodo usado DefaultTableModel padrão;
public void preechertabela(){
Jtb_tabela1.getColumnModel().getColumn(i).setMaxWidth(80);
DefaultTableModel modelo = (DefaultTableModel) Jtb_tabela1.getModel();
modelo.setNumRows(0);
modelo.addRow(new Object[] {dados_do_seu_banco,aaa,aaa});
}
Você está usando o DefaultTableModel ou reconfigurou o Tablemodel?
qual metodo você usou para preecher a tabela.
Metodo usado DefaultTableModel padrão;
public void preechertabela(){
Jtb_tabela1.getColumnModel().getColumn(i).setMaxWidth(80);
DefaultTableModel modelo = (DefaultTableModel) Jtb_tabela1.getModel();
modelo.setNumRows(0);
modelo.addRow(new Object[] {dados_do_seu_banco,aaa,aaa});
}
GOSTEI 0
Lemos Ltda
13/11/2012
Segue os Fontes. A Classe cadcliente tenta listar os clientes na abertura da tela JDialog.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package gui;
import dao.ClienteDAO;
import entidades.ClienteEnty;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Array;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
/**
*
* @author Werner
*/
public class CadCliente extends javax.swing.JDialog {
/**
* Creates new form CadCliente
*/
public CadCliente(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
iniciarBD();
montarTabela();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButton13 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
tbCliente = new javax.swing.JTable();
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jButton1.setText("<<");
jButton2.setText("<");
jButton3.setText(">");
jButton4.setText(">>");
jButton5.setText("Novo");
jButton7.setText("Exclui");
jButton8.setText("Imprime");
jButton9.setText("Consulta");
jButton13.setText("Altera");
tbCliente.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Codigo", "Nome", "Fantasia", "Telefone"
}
));
jScrollPane2.setViewportView(tbCliente);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 345, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addGap(2, 2, 2)
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton4))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton7)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jButton9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton8, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(14, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 226, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3)
.addComponent(jButton4)
.addComponent(jButton8))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton5)
.addComponent(jButton7)
.addComponent(jButton9)
.addComponent(jButton13))
.addContainerGap())
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-381)/2, (screenSize.height-352)/2, 381, 352);
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/*
* Set the Nimbus look and feel
*/
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available, stay with the
* default look and feel. For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(CadCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(CadCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(CadCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(CadCliente.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/*
* Create and display the dialog
*/
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
CadCliente dialog = new CadCliente(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton13;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable1;
private javax.swing.JTable tbCliente;
// End of variables declaration
private java.sql.Connection con;
private java.sql.Statement stmtListar;
private java.sql.ResultSet rsListar;
private ClienteDAO clienteDao;
private void iniciarBD() {
try {
clienteDao = new ClienteDAO();
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Erro na Conexão: " + e.getMessage());
}
}
private void montarTabela() {
try {
ArrayList<ClienteEnty> clientes = clienteDao.listarClientes();
int linha = 0;
for (ClienteEnty cli : clientes) {
String cdcli = cli.getCd_cli();
String nmcli = cli.getNm_cli();
String nmfantasia = cli.getNm_fantasia();
String nrfon = cli.getNr_fon();
tbCliente.getModel().setValueAt(cdcli, linha, 0);
tbCliente.getModel().setValueAt(nmcli, linha, 1);
tbCliente.getModel().setValueAt(nmfantasia, linha, 2);
tbCliente.getModel().setValueAt(nrfon, linha, 3);
linha++;
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Erro na Montagem da Tabela: " + e.getMessage());
}
}
}
GOSTEI 0
Lemos Ltda
13/11/2012
Ai segue a imagem com o erro:
[url]http://www.lemarq.com.br/sas/erro.png[/url]
[url]http://www.lemarq.com.br/sas/erro.png[/url]
GOSTEI 0
Lemos Ltda
13/11/2012
E agora como eu fiz: coloquei um JTable em uma Janela JDialog, depois fui na aba propriedades e escolhi a propriedade "model" e coloquei 4 linhas. Mas na tabela de clientes do meu banco de dados tem 5 registros, então é apresentado o erro citado anteriormente. Seu eu aumentar a quantidade de linhas do JTable para um numero maior ou igual ao numero de clientes que tenho na tabela o erro não é apresentado. Gostaria de uma alternativa apropriada para essas situações. Desde já agradeço a ajuda de todos.
GOSTEI 0
David Alberto
13/11/2012
Amigo tente usar o seu preecher tabela assim.
private void montarTabela() {
tbCliente.getColumnModel().getColumn(0).setMaxWidth(60);
tbCliente.getColumnModel().getColumn(1).setMaxWidth(300);
tbCliente.getColumnModel().getColumn(2).setMaxWidth(300);
tbCliente.getColumnModel().getColumn(2).setMaxWidth(300);
DefaultTableModel modelo = (DefaultTableModel) tbCliente.getModel();
modelo.setNumRows(0);
try {
ArrayList<ClienteEnty> clientes = clienteDao.listarClientes();
int linha = 0;
for (ClienteEnty cli : clientes) {
String cdcli = cli.getCd_cli();
String nmcli = cli.getNm_cli();
String nmfantasia = cli.getNm_fantasia();
String nrfon = cli.getNr_fon();
modelo.addrow(new object[]{cdcli,nmcli,nmfantasia,nrfon});
linha++;
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Erro na Montagem da Tabela: " + e.getMessage());
}
}
private void montarTabela() {
tbCliente.getColumnModel().getColumn(0).setMaxWidth(60);
tbCliente.getColumnModel().getColumn(1).setMaxWidth(300);
tbCliente.getColumnModel().getColumn(2).setMaxWidth(300);
tbCliente.getColumnModel().getColumn(2).setMaxWidth(300);
DefaultTableModel modelo = (DefaultTableModel) tbCliente.getModel();
modelo.setNumRows(0);
try {
ArrayList<ClienteEnty> clientes = clienteDao.listarClientes();
int linha = 0;
for (ClienteEnty cli : clientes) {
String cdcli = cli.getCd_cli();
String nmcli = cli.getNm_cli();
String nmfantasia = cli.getNm_fantasia();
String nrfon = cli.getNr_fon();
modelo.addrow(new object[]{cdcli,nmcli,nmfantasia,nrfon});
linha++;
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Erro na Montagem da Tabela: " + e.getMessage());
}
}
GOSTEI 0
Lemos Ltda
13/11/2012
david alberto, muitissimo obrigado colega, funcionou beleza.
GOSTEI 0
Lemos Ltda
13/11/2012
[RESOLVIDO] muito obrigado
GOSTEI 0