Bom tarde pessoal,
Estou fazendo uma aplicação em Java, estou usando interface FX. Cada janela trabalha com uma classe de objetos e tem uma controller própria. Cada janela tem uma tableView, eu construí uma classe para as células das tableViews, “FinCell”, mas eu não consigo compartilha-la com todas as classes controllers, só funciona se eu replicar a classe “FinCell” em cada uma das classes controllers que eu quiser usar a FinCell. Alguma dica de como eu posso fazer isso? Segue o código:
CLASSE COM MÉTODOS COMPARTILHADOS POR TODAS AS CONTROLLERS:
public class Metodos {
static public class FinCell extends TableCell<Class, Double> {
…
}
}
CLASSE CONTROLLER DA JANELA LANÇAMENTOS (Lancamentos_janelaController):
public class Lancamentos_janelaController implements telaController {
…
@FXML private TableColumn<Lancamento, Double> clValor;
public void configuraTableView(){
clValor.setCellValueFactory(new PropertyValueFactory<>(“valor”));*
clValor.setCellFactory(col -> new FinCell(clNomeFundo,false,clData,true));*
…
}
…
}
CLASSE CONTROLLER DA JANELA PROVISÕES (Provisoes_janelaController):
public class Provisoes_janelaController implements telaController {
…
@FXML private TableView tbl = new TableView();
@FXML private TableColumn<Provisao, String> clNome, clIdFundo,clNomeFundo,clId;
@FXML private TableColumn<Provisao, Double> clValor;
…
public void configuraTableView(){
clValor.setCellValueFactory(new PropertyValueFactory<>(“valor”));
clValor.setCellFactory(col -> new FinCell());
}
…
}
ERRO EM Lancamentos_janelaController:
incompatible types: bad return type in lambda expression
FinCell cannot be converted to TableCell<Lancamento,Double>
The type of setCellFactory(Callback<TableColumn<S,T>,TableCell<S,T>>) is erroneous
where S,T are type-variables:
S extends Object declared in class TableColumn
T extends Object declared in class TableColumn
ERRO EM Provisoes_janelaController:
incompatible types: bad return type in lambda expression
FinCell cannot be converted to TableCell<Provisao,Double>
The type of setCellFactory(Callback<TableColumn<S,T>,TableCell<S,T>>) is erroneous
where S,T are type-variables:
S extends Object declared in class TableColumn
T extends Object declared in class TableColumn
SOLUÇÕES TENTADAS:
Tentei variar a declaração da FinCell dessas maneiras, mas nada adiantou:
static public class FinCell extends TableCell<Class, Double> {...}
static public class FinCell extends TableCell<Object, Double> {...}
static public class FinCell extends TableCell<, Double> {...}
static public class FinCell extends TableCell<S, Double> {...}
static public class FinCell extends TableCell<T, Double> {...}
static public class FinCell extends TableCell<<>, Double> {...}
Se eu colocar a classe da forma abaixo, funciona, mas só na respectiva controller… E a intenção é que uma classe atenda à todas as controllers.
static public class FinCell extends TableCell<Provisao, Double> {...}
Desde já agradeço a atenção de todos.