Alterar componentes criados em tempo de execução

2 respostas
javafxjava
abnersanlai

Galera fiz uma tela que ela cria vários pane em tempo de execução nesses panes ficam descrição e valor dos produtos, preciso de uma forma de pegar esses panes e pintar ele de vermelho quando o usuário cancelar, não estou conseguido fazer isso, como posso fazer ?

2 Respostas

RoinujNosde

Como você está criando os panes? Mostre o método.
Já tem o método de cancelar um produto? Mostre tbm.

abnersanlai

Uso esse cara para criar um panel que vai os dados do produto
public Pane painelProduto(String sequencia, String codigo, String descricao, String quantidade
, String valorUnitario, String unidadeMedida, BigDecimal acreDesco, String valorTotal, VBox VboxProduto) {

String descOrAcrec = "";

   if (acreDesco.compareTo(BigDecimal.ZERO) > 0){
       descOrAcrec = "+";
   } else {
       descOrAcrec = "-";
   }


    pnlproduto = new Pane();
    vbProduto = new VBox();
    pnlproduto.prefWidthProperty().bind(VboxProduto.widthProperty().multiply(1));
    vbProduto.prefWidthProperty().bind(pnlproduto.widthProperty().multiply(1));
    if (Integer.parseInt(sequencia) % 2 == 0){
        pnlproduto.setStyle("-fx-background-color:Silver");
    }   else {
        pnlproduto.setStyle("-fx-background-color:White");
    }
    HBox h1 = criarHBox( this.id );
    h1.prefWidthProperty().bind(vbProduto.widthProperty().multiply(1));
    h1.getChildren().addAll(Label(sequencia,h1,0.5), Label(codigo,h1,0.5));



    HBox h2 = criarHBox( this.id );
    h2.prefWidthProperty().bind(vbProduto.widthProperty().multiply(1));
    h2.getChildren().addAll(Label(descricao,h2,1));


    HBox h3 = criarHBox( this.id );
    h3.prefWidthProperty().bind(vbProduto.widthProperty().multiply(1));
    h3.getChildren().addAll(Label(quantidade,h3,0.4), Label("R$ " + valorUnitario,h3,0.4), Label(unidadeMedida,h3,0.2));

    HBox h4 = criarHBox( this.id );
    h4.prefWidthProperty().bind(vbProduto.widthProperty().multiply(1));
    h4.getChildren().addAll(Label( acreDesco.compareTo(BigDecimal.ZERO)  == 0 ? "0.00" : descOrAcrec  + acreDesco.toString(),h4,0.5),Label("R$ " + valorTotal + "\n",h4,0.5));

    HBox quebraLinha = criarHBox(this.id);
    quebraLinha.getChildren().add(Label("************--------************",quebraLinha,1));
    vbProduto.getChildren().addAll(h1, h2,h3,h4,quebraLinha);
    pnlproduto.getChildren().add(vbProduto);

    return pnlproduto;
}

depois uso esse cara para adicionar o panel acima em um vbox

protected void AddProdutoScrolPane(){

    PanelProduto produto = new  PanelProduto(Long.toString(getVboxProduto().getChildren().stream().count() + 1));
    getVboxProduto().getChildren().add(produto.painelProduto(Long.toString(getVboxProduto().getChildren().stream().count() + 1),getController().getTextCodigoProduto(),
            getController().getTxtDescricaoProduto(),
            getController().getQuantidadeInformada().toPlainString(),
            getController().getTxtValorUnitario(), getController().getTxtUnidade().toString(),
            getController().getDescontoAcrescimoItemParametro().getValor() ,
            getController().getTxtTotalPagar(),
            getVboxProduto()));
}

Ainda não tenho o método para cancelar, seria somente pintar os label de vermelho.
Ja tirando outra duvida, tem como eu definir para o vbox sempre mostrar o ultimo filho.

Criado 12 de abril de 2021
Ultima resposta 12 de abr. de 2021
Respostas 2
Participantes 2