PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Template Method com JavaFx Stage Não funciona :( #555717

04/06/2016

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar