Template Method com JavaFx Stage Não funciona :(

Java

04/06/2016

Olá pessoal,

Estou me debatendo com um problema já faz muitos dias. Eu tenho uma classe abstrata usando template method com objetivo de agilizar o desenvolvimento de algumas telas em java. Mas quando extendo a classe abstrata e sobrescrevo os métodos auxiliares na classe fila, os objetos instanciados dentro dos métodos auxiliares não ficam acessíveis dentro da classe filha.

A minha classe abstrata é algo como mostrado abaixo:
public abstract class AbstractFormStage<T> extends Stage {

    private XGridPane grid;
    private ButtonsBarForm buttons;
    private TableView<T> table;

    public AbstractFormStage(String title) {
        this.setTitle(title);
        this.setWidth(600);

        grid = new XGridPane();
        buttons = new ButtonsBarForm();
        table = new TableView<T>();

        this.loadComponents(); // método final usado como template
    }

    final void loadComponents() {
        this.initComponents(); // método abstrato sobrescrito nas classes filhas

        // algoritmo usado por todas as classes filhas
        this.createDefaultButtons();
        this.setScene(new Scene(grid));
    }

}


Agora a classe filha....

public class RepresentadaCadastroStage extends AbstractFormStage<Cliente> {
    private ListaPaneTableBanco tableBanco = null;

    public RepresentadaCadastroStage(String title) {
        super(title);
    }

    @Override
    public void initComponents() {
        // um grid pane simples com um TableView<Banco> e uma barra de botões
        tableBanco = new ListaPaneTableBanco();  

        // Adiciona o tableBanco no pane raiz do stage
        grid.add(tableBanco);
    }

    public void listarBancos() {
        // essa linha sempre emite um Null Pont Exception 
        // independente do lugar onde e do momento em que esse método for chamado
        tableBanco.listar(); 
    }

}


Alguém já passou por um problema desse tipo? A única solução que encontrei foi remover o template method e colocar tudo no construtor das classes filhas. O problema dessa abordagem é que fico com código repetido sempre que for criar um formulário novo.
Eduardo Monteiro

Eduardo Monteiro

Curtidas 0
POSTAR