Как динамически обновлять пользовательский интерфейс в javaFX?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как динамически обновлять пользовательский интерфейс в javaFX?

Сообщение Anonymous »

Извините, если это глупый вопрос, я впервые использую javafx и пытаюсь изучить. Я создаю проект JavaFX, который включает обновление содержимого панели путем щелчка элемента. Это работает следующим образом: при нажатии на элемент данные будут переданы в карточку выбранного товара. Однако, когда я пытаюсь это сделать, хотя он обновляет метки и изображения, он не показывает их на выбранной карточке товара. Коды ниже — это контроллер, который обновляет компоненты в выбранной карточке товара.

Код: Выделить всё

package Controller;

import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import application.MyListener;
import item.*;

public class OrderController {

SceneLoader object = new SceneLoader();
MyListener myListener;
private Image image;

@FXML
private ImageView ImageChosen;

@FXML
private Button addCartButton;

@FXML
private VBox buyBox;

@FXML
private AnchorPane buyPanel;

@FXML
private VBox chosenSeed;

@FXML
private Label descriptionLabel;

@FXML
private Button fruitsButton;

@FXML
private Button herbButton;

@FXML
private AnchorPane itemPane;

@FXML
private Label nameLabel;

@FXML
private Label priceLabel;

@FXML
private Button vegetableButton;

@FXML
private Button detailsButton;

@FXML
public void switchSelection(String rqstPane) {
try {
itemPane.getChildren().clear();
Parent newPane = object.getPage(rqstPane);

if (newPane != null) {
itemPane.getChildren().add(newPane);
} else {
System.out.println("Failed to load pane: " + rqstPane);
}
} catch (Exception e) {
System.out.println("Error while switching pane: " + e.getMessage());
e.printStackTrace();
}
}

@FXML
private void selectButton(Button selectedButton) {
vegetableButton.getStyleClass().remove("selected");
fruitsButton.getStyleClass().remove("selected");
herbButton.getStyleClass().remove("selected");
selectedButton.getStyleClass().add("selected");
}

@FXML
void fruitsPage() {
switchSelection ("Fruits");
selectButton (fruitsButton);
}

@FXML
void herbsPage() {
switchSelection ("Herbs");
selectButton (herbButton);
}

@FXML
void vegetablePage() {
switchSelection ("Vegetables");
selectButton (vegetableButton);
}

public void setChosenItem (Ardealya item) {
if (item == null) return;

Platform.runLater(() -> {
nameLabel.setText(item.getItemName());
priceLabel.setText("Php " + item.getPrice());
descriptionLabel.setText(item.getDescription());

// Ensure the image is updated correctly
Image image = new Image(getClass().getResourceAsStream(item.getImageSource()));
ImageChosen.setImage(image);

buyPanel.setVisible(true);
// Force the layout to update
buyPanel.requestLayout();
});

System.out.println("\nName Label Updated: " + nameLabel.getText());
System.out.println("Price Label Updated: " + priceLabel.getText());
System.out.println("Description Label Updated: " + descriptionLabel.getText());
System.out.println("Image Updated: " + item.getImageSource());

}

@FXML
private void calculator () {
new SimpleCalculatorClass ();
}

}

это запись моей проблемы: https://drive.google.com/file/d/17KOrGr ... sp=sharing
Я попробовал реле, которое заставляет пользовательский интерфейс обновляться, но мне это тоже не помогает.


Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-javafx
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»