Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Inviare comandi ad un componente JavaFX

    ciao!

    allora, vi spiego il problema.
    ho agigunto un componente JavaFX HTMLEditor, che però sembra soffrire di un bug.
    in pratica non intercetta il tasto invio.
    ho trovato diverse soluzioni online, ma in tutte si integra questo componente dentro swing.
    mentre io non faccio uso di swing.

    però, al posto di ENTER si può usare CTRL+M (e non è una mia impostazione, funziona proprio così).
    al momento ho fatto così:
    codice:
    @FXML
    private HTMLEditor he;
    
    @FXML
    public void initialize() {
        he.setOnKeyPressed(t -> {
            if (t.getCode() == KeyCode.ENTER) {
                GenericDialog.showDialog("Usare CTRL+M per andare a capo!", Alert.AlertType.INFORMATION);
            }
        });
    }
    in pratica avverto l'utente di usare CTRL+M.
    però ho pensato di fare una cosa del tipo: quando viene premuto ENTER io invio CTRL+M.
    sarebbe possibile secondo voi fare una cosa del genere??

  2. #2
    ho risolto in altro modo.
    usando un jframe con un jfxpanel e mettendoci dentro l'htmleditor.
    cosi facendo non ci sono problemi nell'editor.
    evidentemente il bug non è tanto nell'editor, ma nei contenitori di javafx.

    cmq questo funziona bene:
    codice:
    import javafx.application.Platform;
    import javafx.embed.swing.JFXPanel;
    import javafx.scene.Scene;
    import javafx.scene.layout.StackPane;
    import javafx.scene.web.HTMLEditor;
    
    import javax.swing.*;
    
    public class ControllerNota extends JFrame {
    
        private JFXPanel panel;
        private Scene scene;
        private StackPane stack;
        private HTMLEditor he;
        boolean wait = true;
    
        public ControllerNota() {
            panel = new JFXPanel();
    
            Platform.runLater(() -> {
                stack = new StackPane();
                scene = new Scene(stack, 700, 500);
                he = new HTMLEditor();
                panel.setScene(scene);
                stack.getChildren().add(he);
                wait = false;
            });
    
            this.getContentPane().add(panel);
            this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            this.setSize(700, 500);
            this.setResizable(false);
            this.setVisible(true);
            this.setLocationRelativeTo(null);
        }
    }
    da richiamare così:
    codice:
    SwingUtilities.invokeLater(() -> new ControllerNota());

    ciao!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.