Установить элементы Javafx видимыми или невидимыми из другого класса - PullRequest
0 голосов
/ 29 мая 2020

Привет? У меня есть приложение JavaFX, которое загружает изображения на онлайн-сервер. когда пользователь нажимает кнопку загрузки, отображается неопределенный диалог выполнения. Я хочу скрыть этот диалог прогресса после завершения загрузки, но мне кажется, что он не работает. это мой код

КЛАСС КОНТРОЛЛЕРА УВЕДОМЛЕНИЙ

public class NotificationController implements Initializable {

@FXML
public HBox progressHbox;
@FXML
public HBox textHbox;
@FXML
public TextField urlText;
@FXML
private TextField titleText;
@FXML
private ProgressBar progressBar;
@FXML
private AnchorPane rootPane;
Preferences preferences = new Preferences();
@FXML
private Button copyButton;

/**
 * Initializes the controller class.
 */
@Override
public void initialize(URL url, ResourceBundle rb) {
    conn = Main.conn;
    progressHbox.setVisible(true);
    textHbox.setVisible(false);
}

@FXML
private void loadOpenUrl(ActionEvent event) {
    try {
        Desktop.getDesktop().browse(new URI(imageurl));
        Stage stage = (Stage) rootPane.getScene().getWindow();
        stage.close();
    } catch (IOException | URISyntaxException ex) {
        Logger.getLogger(NotificationController.class.getName()).log(
                Level.SEVERE, null, ex);
    }

}

Connection conn;

@FXML
private void loadCopyUrl(ActionEvent event) {

    if (titleText.getText().length() > 0) {
        try {
            String id = imageurl.replaceAll("[^\\d]", "");
            ;
            System.out.println("this is id " + id);
            conn.prepareStatement(
                    "UPDATE images set title = '" + titleText.getText()
                            + "' where id = " + id + "").execute();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    Clipboard clipboard = Clipboard.getSystemClipboard();
    ClipboardContent content = new ClipboardContent();
    content.putString(imageurl);
    clipboard.setContent(content);
    Stage stage = (Stage) rootPane.getScene().getWindow();
    stage.close();
}


@FXML
private void loadbuttonText(KeyEvent event) {
    if (titleText.getText().length() > 0) {
        copyButton.setText("Copy/Update");
    } else {
        copyButton.setText("Copy");

    }
}


}

Из моего основного класса я сначала загружаю контроллер уведомлений таким образом видимость компонентов:

if (uploadsuccess && !isGoogle) {
                    HBox ph = new HBox();
                    HBox th = new HBox();
                    TextField urls = new TextField();
                    System.out.println("Uploaad suceess testing");
                    NotificationController nc = new NotificationController();
                    ph = nc.progressHbox;
                    th = nc.textHbox;
                    urls = nc.urlText;

                    ph.setVisible(false);
                    th.setVisible(true);
                    urls.setText(imageurl);


                }

Я пробовал описанный выше метод, но он не работает, но отображается вывод консоли (тестирование успешности загрузки). Кто-нибудь знает, как мне это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...