Ir para conteúdo
Fórum Script Brasil

rfs1970

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre rfs1970

rfs1970's Achievements

0

Reputação

  1. Oi Galera, Eu sou um completo iniciante, e gostaria de saber se alguém poderia me ajudar neste problema: Eu estou tentando criar uma classe / função para ser usada/chamada em qualquer form que contenha um grid(jTable) no qual eu deseje visualizar dados de uma tabela em um banco de dados qualquer. Bom... aqui esta o meu codigo fonte para a funcao descrita acima: package Utilitarios; import Utilitarios.Conecta; import java.sql.*; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; /** * * @author renato ferrari de souza */ public class FeedTable { public java.util.Vector campos = new java.util.Vector(); public java.util.Vector valores = new java.util.Vector(); public java.util.Vector nomes = new java.util.Vector(); public java.util.Vector tamanho = new java.util.Vector(); Conecta banco; public DefaultTableModel modelo; public void preenche(String query, javax.swing.JTable tabela) { Integer x; banco = new Conecta(); banco.conectar(); banco.executeSQL(query); DefaultTableModel modelo = (DefaultTableModel)tabela.getModel(); modelo.setNumRows(0); modelo.setColumnCount(0); if(nomes.isEmpty()) { for (x=0; x<campos.size(); x++) { nomes.add(campos.get(x).toString()); } } for (x=0; x<nomes.size(); x++) { modelo.addColumn(nomes.get(x).toString()); } for (x=0; x<tamanho.size(); x++) { tabela.getColumnModel().getColumn(x).setPreferredWidth(Integer.parseInt(tamanho.get(x).toString())); } try { while (banco.resultset.next()) { for (x=0; x<campos.size(); x++) { valores.add(banco.resultset.getString(campos.get(x).toString())); } modelo.addRow(valores); valores.removeAllElements(); } } catch(Exception e) { System.out.println(e.getMessage()); } banco.desconectar(); } } E aqui esta a descricao, de como ela é usada/chamada no meu form: package Tabelas; import Utilitarios.FeedTable; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; /** * * @author renato ferrari de souza */ public class Classe extends javax.swing.JFrame { /** Creates new form Classe */ FeedTable tabela; public Classe() { initComponents(); tabela = new FeedTable(); tabela.campos.add("id"); tabela.campos.add("nome"); tabela.campos.add("detalhes"); tabela.campos.add("lugares"); tabela.tamanho.add(10); tabela.tamanho.add(90); tabela.tamanho.add(90); tabela.tamanho.add(10); tabela.preenche("select * from personal.rfrs_classe order by nome", jTable1); } /** 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. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 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); 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() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(13, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(13, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); pack(); }// </editor-fold> /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Classe().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JScrollPane jScrollPane1; public javax.swing.JTable jTable1; // End of variables declaration } Mas infelizmente, no momento eu estou obtendo esta mensagem de erros: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 at java.util.Vector.elementAt(Vector.java:427) at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:633) at javax.swing.JTable.getValueAt(JTable.java:2652) at javax.swing.JTable.prepareRenderer(JTable.java:5666) at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2067) at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1969) at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1765) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143) at javax.swing.JComponent.paintComponent(JComponent.java:758) at javax.swing.JComponent.paint(JComponent.java:1022) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JViewport.paint(JViewport.java:747) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JLayeredPane.paint(JLayeredPane.java:564) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5111) at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:285) at javax.swing.RepaintManager.paint(RepaintManager.java:1132) at javax.swing.JComponent.paint(JComponent.java:1008) at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21) at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60) at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97) at java.awt.Container.paint(Container.java:1797) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:738) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:683) at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:663) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Só mais uma questão, mesmo com este erro esta função poderia funcionar? Quero dizer: A idéia era construir uma unica funcao/classe que pudesse enviar os dados armazenados em uma tabela qualquer do meu BD para um objeto jTable em um Form... Eu pergunto isso pois não sei ainda como é que o java opera quando a mesma funcao é chamada por dois ou mais forms ao mesmo tempo... acredito que haja algum controle de instancias... ou não ??? já agradeco antecipadamente por qualquer ajuda, valeu, r. r.
×
×
  • Criar Novo...