Platform.runLater está "morrendo"

39 views
Skip to first unread message

Ademilson Marsiglio

unread,
Jul 8, 2015, 12:37:15 PM7/8/15
to java...@googlegroups.com
Olá pessoal, minha primeira postagem no grupo.

Tenho infrentado problemas que até hoje não soube como tratar. 

Na empresa onde trabalho, tenho uma aplicação grande (ERP) desenvolvido em java swing. Porém, em alguns casos específicos(gráficos, editor html, visualizador de fotos) utilizo javaFX.

Quando eu abro um programa java swing e chamo o painel que contém o javafx, ele executa o paltform.runLater, e quando fecha o programa ele recolhe os objetos, e quando vou abrir novamente ele não abre o javaFx. Por que o Platform.runLater deve ser chamado apenas uma vez na aplicação toda. 

Qual seria a alternativa para mim resolver este problema?

Heverton Silva Cruz

unread,
Jul 9, 2015, 7:49:42 PM7/9/15
to java...@googlegroups.com
Você pode me mandar um exemplo de código? Você esta utilizando singleton?

Ademilson Marsiglio

unread,
Jul 10, 2015, 10:06:39 AM7/10/15
to java...@googlegroups.com


O código é este:

public JFXPanel initAndShowGUI() {

        final JFXPanel fxPanel = new JFXPanel();

        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                try {
                    initFX(fxPanel);
                } catch (ParseException ex) {
                    Logger.getLogger(Parceria_Barras.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
        return fxPanel;
    }

    private void initFX(JFXPanel fxPanel) throws ParseException {
        Scene scene = geraGraficoBarras();
        fxPanel.setScene(scene);
    }

Heverton Silva Cruz

unread,
Jul 11, 2015, 11:42:08 AM7/11/15
to java...@googlegroups.com
Quando você utiliza o run.later, não é sincrono e sem sim assincrono.
Coloquei um trecho de codigo no qual, apenas o stage fica para ser executado.

Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
        Scene scene = new Scene(root);
        fxPanel.setScene(scene);
        stage.setScene(scene);

   
        Platform.runLater(new Runnable() {
        @Override
            public void run() {
                stage.show();
            }
        });

Veja os links:

https://github.com/Heverton/DialogFX
https://github.com/Heverton/UtilFX


Em quarta-feira, 8 de julho de 2015 13:37:15 UTC-3, Ademilson Marsiglio escreveu:
Reply all
Reply to author
Forward
0 new messages