[Netbeans] Não consigo arrastar meu componente para o Matisse

Olá:

Estou usandoo NetBeans 6.8. Criei um subclasse de JSpinner sem nenum método adicional. Em seguida criei um JFrame com método main. Com a tela de construção de GUI aberta no JFrame, tentei arrastar o meu JSpinner da janela de projetos para o JFrame. Entretanto quando faço isso aparece a seguinte mensagem: Não é possível instanciar o componente. Certifique-se de que se trata de um componene JavaBean. Entretanto o JSpinner que eu criei aparentemente é um JavaBean normal, com um construtor sem argumentos e implementando Serializable. Abaixo segue-se o código:

package spinner;

import java.io.Serializable;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;

public class JXSpinner extends JSpinner implements Serializable {

    /** Creates new form BeanForm */
    public JXSpinner() {
        numberModel = new SpinnerNumberModel(0, 0, 10, 1);
        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() {

        setModel(this.numberModel);
    }// </editor-fold>


    // Variables declaration - do not modify
    // End of variables declaration
    private SpinnerNumberModel numberModel;

    
}

E agora o código do JFrame:

package spinner;

public class TesteJXSpinner extends javax.swing.JFrame {

    /** Creates new form TesteJXSpinner */
    public TesteJXSpinner() {
        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() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new java.awt.FlowLayout());

        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 TesteJXSpinner().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    // End of variables declaration

}

Como se vê a classe JXSpinner aparentemente se enquadra na definição de JavaBean. Se é assim, o que está faltando oara poder funcionar no NetBeans?

Grato,

Estou com o mesmo problema, será que não tem ninguém ai que pode ajudar?

O construtor de JXSpinner não chamou o construtor de JSpinner. Acho que deveria ser algo como:

    public JXSpinner() {  
        super();
        numberModel = new SpinnerNumberModel(0, 0, 10, 1);  
        initComponents();  
    }  

Note que o NetBeans, na verdade, não faz uma checagem “estática” do seu código.
Ele faz algo mais mágico: ele tenta simplesmente instanciar seu componente JXSpinner, chamando o construtor default, e depois tentando chamar alguns setters e getters, para poder desenhar o componente no editor gráfico. Se não conseguir fazer isso (por exemplo, porque o construtor do componente não chamou o construtor da classe pai e dessa forma não inicializando um monte de coisas), ele dá essa mensagem de erro. OK?

E é por isso que você deve evitar chamar comandos que dependem do ambiente, como abrir conexões de bancos de dados, etc. no construtor default ou em algum método indiretamente chamado por ele. É que isso irá fazer com que você não consiga inserir o componente usando o editor gráfico.

E criei um componente javaBeans, onde o mesmo extende o JTextFiel, onde eu fiz alguns métodos de implementação dentro do novo componente, e eu adicionava-o dentro da paleta de componentes. Até ai tudo bem, eu criei um JFrame para eu testar o componente que eu criei, e clicava no meu componente que estava na paleta e arrastava para o JFrame e funcionava normal, mas ai essa semana eu excluir o componente da paleta, fiz outros métodos, e adicionei novamente o componente na paleta, mas quando fui clicar no meu componente e arrastar para o JFrame apareceu um erro. Eu já compilei novamente, limpei e construir mas continua aparecendo o mesmo erro(da imagens abaixo), antes desse erro estava aparecendo a menssagem Não é possível instanciar o componente. Certifique-se de que se trata de um componene JavaBean, pensei que fosse a IDE então eu atualizei a IDE mas não funcionou do mesmo jeito, e agora aparece o erro da imagem abaixo.

Eu estou precisando muito de ajuda. Eu criei um outro componente javaBeans do zero e apenas extende o JTextFiel e coloco na paleta, mas quando vou arrastar para um JFrame da o mesmo erro.