Caused: java.lang.NullPointerException
at tabelapersonalizada.tabelaPersonalizada.<init>(tabelaPersonalizada.java:21)
NPE no seu componente…
tflm
Acabei de acertar isso,o q eu fiz foi iniciliazar os 3 atributos dessa classe,
mas continua dando o mesmo erro. Vou postar o log.
tflm
q sopa d letrinhas… tirei, o erro parece igual do log anterior.
tflm
retirei essa parte do log.
tflm
Vou fazer mais fácil.
Vou postar o código aqui.
/** * * @author tflmattos */importjavax.swing.table.*;publicclassgridPersonalizadaextendsjavax.swing.JPanel{privatemodeloTabelamodelo;privateObject[][]conteudoGrid;privateString[]nomeColunas;/** Creates new form gridPersonalizada */publicgridPersonalizada(){modelo=newmodeloTabela();conteudoGrid=newObject[2][2];nomeColunas=newString[2];initComponents();}/** 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">privatevoidinitComponents(){jScrollPane1=newjavax.swing.JScrollPane();grid=newjavax.swing.JTable();grid.setModel(newjavax.swing.table.DefaultTableModel(newObject[][]{{null,null,null,null},{null,null,null,null},{null,null,null,null},{null,null,null,null}},newString[]{"Title 1","Title 2","Title 3","Title 4"}));jScrollPane1.setViewportView(grid);org.jdesktop.layout.GroupLayoutlayout=neworg.jdesktop.layout.GroupLayout(this);this.setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jScrollPane1,org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,400,Short.MAX_VALUE));layout.setVerticalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jScrollPane1,org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,300,Short.MAX_VALUE));}// </editor-fold>/** * Seta o conteudo do Grid * @param conteudoGrid */publicvoidsetConteudoGrid(Object[][]conteudoGrid){this.conteudoGrid=conteudoGrid;}/** * Seta o nome das colunas do Grid * @param nomeColunas */publicvoidsetNomeColunas(String[]nomeColunas){this.nomeColunas=nomeColunas;}/** * Método que preenche o customGrid com os Dados de Conteudo, e nomeia as colunas * a partir do vetor de String Colunas. * @param conteudo * @param colunas */publicvoidsetCarregaDados(Object[][]conteudo,String[]colunas){grid.setModel(modelo);// preeche a tabela com os dados das matrizes conteudo e colunasmodelo.setDataVector(conteudo,colunas);}/** * Remove uma linha do customGrid, caso haja alguma selecionada * @return */publicbooleansetRemoveLinhaSelecionadaGrid(){if(grid.getSelectedRow()!=-1){DefaultTableModelmodel=(DefaultTableModel)grid.getModel();//remove o registro selecionado model.removeRow(grid.getSelectedRow());returntrue;}returnfalse;}// Variables declaration - do not modifyprivatejavax.swing.JTablegrid;privatejavax.swing.JScrollPanejScrollPane1;// End of variables declaration}
tflm
Ah,
Obrigado pela atenção!
hmichel
Seu projeto esta compilado?
Via de regra, dependendo de como voce adiciona seu componente à paleta, é necessário que o arquivo .class exista em disco. O aconselhável é você ter um jar apenas com seus componentes e então adicioná-los para não tem problemas com classpath e afins. BTW, o compoenente anexado a esta thread esta sendo adicionado corretamente pelo NetBeans.
Já o seu log, apresenta erro no componente customGrid, também um NPE.
[]'s
tflm
Pow,
comecei do zero.
Criei um projeto, depois adicionei na pasta padrao uma classe JPanel com um JTextArea e um JButton.
Depois dei um build. E o .jar foi criado.
Em seguida adicionei o .jar na paleta.
E acontece o mesmo erro!
To fazendo algo errado?
Vlwz!
[]
hmichel
Em tese não… mas sem o stack do erro fica dificil determinar o seu problema, tanto que eu apenas criei um projeto e colei seu codigo (corrigi problemas de compilacao) e funcionou.
Veja o seu log novamente e tente entender, deve estar dando algum erro bem especifico.
[]'s
tflm
Eu acho q achei o erro. PArece q eh simplao…
vo tentar corrigir e depois posto!
Vlwz!
\O/
tflm
O erro foi o seguinte:
Eu estava trabalhando com um projeto em que os .class estavam num determinado pacote.
Já o componente foi criado no pacote padrão.
Pelo que eu percebi, para utilizar um componente a classe corrente necessita estar num mesmo pacote que a classe do componente.
Estranho!
Sabe se há alguma outra solução??
\O/
hmichel
A questão é simples…
o pacote padrão não tem import… logo, como que o compilador vai saber se qnd vc for utilizar uma determinada classe A por outra classe B (sendo esta ultima em um pacote qualquer), que a classe A esta no pacote padrao ou no mesmo pacote, sendo que para ambos os casos não há import explícito? Para isto, pasta você deixar seus componentes organizados de forma correta em pacotes. Não utilizar pacotes é desencorajado.
[]'s
tflm
Na verdade eu tinha imaginado isso.
Soh o q acho estranho eh q eu crio um componente, mas sempre que quiser utiliza-lo, terei que deixar a classe onde conterah o componente, no mesmo pacote dele.
Achei que pudesse haver um modo generico.
Que eu pudesse utilizar o componente em qualquer pacote de qualquer projeto. DE algma forma recursiva ele se situa-se…