Здесь я получаю ObservableList
Товаров. Затем для каждого продукта в List
я создаю Label
для названия, цены и количества. Я также создаю две кнопки, чтобы добавлять и удалять количество, изменяя значение на этикетке. Моя проблема заключается в методе ´escolherProdutos () ´, где я хочу получить доступ к значению каждого ярлыка, соответствующему количеству, чтобы я мог знать, какие количества каждого продукта запрашиваются, и, похоже, я не могу получить доступ к этим значениям извне populateFlowPane()
метод. Вероятно, это не лучшее решение моей проблемы, и я новичок, поэтому, если вы можете помочь мне решить мою проблему или даже найти лучший способ сделать это, я был бы очень благодарен.
public class EscolherProdutosController
{
@FXML private VBox nomesVBox;
@FXML private VBox precoVBox;
@FXML private VBox qtdsVBox;
@FXML private Button escolherBtn;
private static ArrayList<Label> quantidades = new ArrayList<>();
@FXML
public void initialize()
{
populateFlowPane();
}
public void populateFlowPane()
{
ObservableList<Produto> produtos = Logic.getProdutos();
produtos.forEach(prod -> {
HBox hbox = new HBox(5);
Label nome = new Label(prod.getNome());
Label preco = new Label(String.valueOf(prod.getPreco()));
Button minus = new Button("-");
minus.setMinSize(20, 20);
Label qtd = new Label("0");
Button plus = new Button("+");
nomesVBox.getChildren().add(nome);
precoVBox.getChildren().add(preco);
hbox.getChildren().addAll(minus, qtd, plus);
qtdsVBox.getChildren().add(hbox);
//remover unidades do produto
minus.setOnAction((ActionEvent e) -> {
int quantidade = Integer.parseInt(qtd.getText());
if(quantidade >= 1)
{
quantidade--;
qtd.setText(String.valueOf(quantidade));
}
});
//adicionar unidades do produto
plus.setOnAction((ActionEvent e) -> {
int quantidade = Integer.parseInt(qtd.getText());
if(quantidade >= 0)
{
quantidade++;
qtd.setText(String.valueOf(quantidade));
}
});
quantidades.add(qtd);
});
}
public void escolherProdutos()
{
ObservableList<Produto> produtos = Logic.getProdutos();
produtos.forEach(prod -> {
quantidades.forEach(qtd -> {
Logic.escolherProdutos(prod.getIdProduto(),
Integer.parseInt(qtd.getText()));
});
});
}
}