Os componentes do pacote padrão não podem ser usados fora do pacote padrão

16 respostas
tflm

Criei um componente conforme o mostrado no link apresentado num outro tópico:
http://weblogs.java.net/blog/claudio/archive/nb-reusable.html

Porém quando movo meu novo componente para um JFrame, aparece esse erro:
Os componentes do pacote padrão não podem ser usados fora do pacote padrão.

O estranho eh que na primeira vez nao ocorreu nada e o componente foi normal p tela…

O que pode estar havendo?

Obrigado.
Abraços.

16 Respostas

hmichel

Por favor envie o stacktrace do problema. Vc deve consegui-lo em View > IDE log file

[]'s

tflm

Alguém?
Já recriei as classes , deixando-as no pacote padrão e nao deu nada!

tflm
ALL [null]: Não é possível instanciar o componente.  Certifique-se de que se trata de um componente JavaBean.

INFO [org.netbeans.modules.form.BeanSupport]: Cannot create default instance of: tabelapersonalizada.tabelaPersonalizada

java.lang.NullPointerException

at tabelapersonalizada.tabelaPersonalizada.(tabelaPersonalizada.java:21)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:494)

at java.lang.Class.newInstance0(Class.java:350)

at java.lang.Class.newInstance(Class.java:303)

at org.netbeans.modules.form.CreationFactory.createDefaultInstance(CreationFactory.java:165)

[catch] at org.netbeans.modules.form.BeanSupport.createBeanInstance(BeanSupport.java:81)

at org.netbeans.modules.form.BeanSupport.getDefaultInstance(BeanSupport.java:107)

at org.netbeans.modules.form.MetaComponentCreator$4.run(MetaComponentCreator.java:1265)

at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:255)

at org.openide.util.Mutex.doEventAccess(Mutex.java:1355)

at org.openide.util.Mutex.readAccess(Mutex.java:317)

at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:240)

at org.netbeans.modules.form.MetaComponentCreator.prepareClass(MetaComponentCreator.java:1259)

at org.netbeans.modules.form.MetaComponentCreator.createComponent(MetaComponentCreator.java:127)

at org.netbeans.modules.form.HandleLayer$NewComponentDrag.end(HandleLayer.java:2798)

at org.netbeans.modules.form.HandleLayer$ComponentDrag.end(HandleLayer.java:2145)

at org.netbeans.modules.form.HandleLayer.endDragging(HandleLayer.java:938)

at org.netbeans.modules.form.HandleLayer.mousePressed(HandleLayer.java:1622)

at java.awt.Component.processMouseEvent(Component.java:5485)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)

at java.awt.Component.processEvent(Component.java:5253)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3889)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1774)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

SEVERE

org.openide.ErrorManager$AnnException: msg

at org.openide.ErrorManager$AnnException.findOrCreate(ErrorManager.java:861)

at org.openide.ErrorManager$DelegatingErrorManager.annotate(ErrorManager.java:650)

at org.openide.ErrorManager.annotate(ErrorManager.java:452)

at org.netbeans.modules.form.MetaComponentCreator.showInstErrorMessage(MetaComponentCreator.java:1388)

at org.netbeans.modules.form.MetaComponentCreator.initComponentInstance(MetaComponentCreator.java:1376)

at org.netbeans.modules.form.MetaComponentCreator.createVisualComponent(MetaComponentCreator.java:833)

at org.netbeans.modules.form.MetaComponentCreator.addVisualComponent(MetaComponentCreator.java:812)

at org.netbeans.modules.form.MetaComponentCreator.createAndAddComponent2(MetaComponentCreator.java:378)

at org.netbeans.modules.form.MetaComponentCreator.access$500(MetaComponentCreator.java:84)

at org.netbeans.modules.form.MetaComponentCreator$3.run(MetaComponentCreator.java:349)

at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:255)

at org.openide.util.Mutex.doEventAccess(Mutex.java:1355)

at org.openide.util.Mutex.readAccess(Mutex.java:317)

at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:240)

at org.netbeans.modules.form.MetaComponentCreator.createAndAddComponent(MetaComponentCreator.java:346)

at org.netbeans.modules.form.MetaComponentCreator.createComponent(MetaComponentCreator.java:131)

at org.netbeans.modules.form.HandleLayer$NewComponentDrag.end(HandleLayer.java:2798)

at org.netbeans.modules.form.HandleLayer$ComponentDrag.end(HandleLayer.java:2145)

at org.netbeans.modules.form.HandleLayer.endDragging(HandleLayer.java:938)

at org.netbeans.modules.form.HandleLayer.mousePressed(HandleLayer.java:1622)

at java.awt.Component.processMouseEvent(Component.java:5485)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)

at java.awt.Component.processEvent(Component.java:5253)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3889)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1774)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

msg

Caused: java.lang.NullPointerException

at tabelapersonalizada.tabelaPersonalizada.(tabelaPersonalizada.java:21)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:494)

at java.lang.Class.newInstance0(Class.java:350)

at java.lang.Class.newInstance(Class.java:303)

at org.netbeans.modules.form.CreationFactory.createDefaultInstance(CreationFactory.java:165)

at org.netbeans.modules.form.RADComponent.createBeanInstance(RADComponent.java:234)

at org.netbeans.modules.form.RADComponent.initInstance(RADComponent.java:173)

[catch] at org.netbeans.modules.form.MetaComponentCreator.initComponentInstance(MetaComponentCreator.java:1373)

at org.netbeans.modules.form.MetaComponentCreator.createVisualComponent(MetaComponentCreator.java:833)

at org.netbeans.modules.form.MetaComponentCreator.addVisualComponent(MetaComponentCreator.java:812)

at org.netbeans.modules.form.MetaComponentCreator.createAndAddComponent2(MetaComponentCreator.java:378)

at org.netbeans.modules.form.MetaComponentCreator.access$500(MetaComponentCreator.java:84)

at org.netbeans.modules.form.MetaComponentCreator$3.run(MetaComponentCreator.java:349)

at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:255)

at org.openide.util.Mutex.doEventAccess(Mutex.java:1355)

at org.openide.util.Mutex.readAccess(Mutex.java:317)

at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:240)

at org.netbeans.modules.form.MetaComponentCreator.createAndAddComponent(MetaComponentCreator.java:346)

at org.netbeans.modules.form.MetaComponentCreator.createComponent(MetaComponentCreator.java:131)

at org.netbeans.modules.form.HandleLayer$NewComponentDrag.end(HandleLayer.java:2798)

at org.netbeans.modules.form.HandleLayer$ComponentDrag.end(HandleLayer.java:2145)

at org.netbeans.modules.form.HandleLayer.endDragging(HandleLayer.java:938)

at org.netbeans.modules.form.HandleLayer.mousePressed(HandleLayer.java:1622)

at java.awt.Component.processMouseEvent(Component.java:5485)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)

at java.awt.Component.processEvent(Component.java:5253)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3889)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1774)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
hmichel

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
 */
import javax.swing.table.*;
public class gridPersonalizada extends javax.swing.JPanel {
    private modeloTabela modelo;
    private Object[][]   conteudoGrid;
    private String[]     nomeColunas;
    /** Creates new form gridPersonalizada */
    public gridPersonalizada() {
        modelo = new modeloTabela();
        conteudoGrid = new Object[2][2];
        nomeColunas= new String[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">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        grid = new javax.swing.JTable();

        grid.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(grid);

        org.jdesktop.layout.GroupLayout layout = new org.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
     */
    public void setConteudoGrid(Object[][] conteudoGrid){
        this.conteudoGrid = conteudoGrid;
    }
    
    /**
     * Seta o nome das colunas do Grid
     * @param nomeColunas
     */
    public void setNomeColunas(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
     */
    public void setCarregaDados(Object[][] conteudo, String[] colunas){
        grid.setModel(modelo);

        // preeche a tabela com os dados das matrizes conteudo e colunas
        modelo.setDataVector(conteudo, colunas);    
    }
    
    /**
     * Remove uma linha do customGrid, caso haja alguma selecionada
     * @return
     */
    public boolean setRemoveLinhaSelecionadaGrid(){
        if(grid.getSelectedRow()!=-1){
            DefaultTableModel model = (DefaultTableModel)grid.getModel(); 
            
            //remove o registro selecionado  
            model.removeRow(grid.getSelectedRow());              
            return true;
        }
        return false;
    }
    
    
    
    // Variables declaration - do not modify
    private javax.swing.JTable grid;
    private javax.swing.JScrollPane jScrollPane1;
    // 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…

Criado 8 de julho de 2008
Ultima resposta 9 de jul. de 2008
Respostas 16
Participantes 2