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:
Agora a classe filha....
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.
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)