Écoute sur le presse-papiers du système à l'aide de JavaFX
Comme indiqué dans la réponse à cette question, on peut configurer une chronologie pour vérifier s'il y a un changement dans le presse-papiers du système:
Définir et utiliser des variables en dehors de la chronologie dans javafx 8
Mais y a-t-il un meilleur moyen? Par exemple, un écouteur d'événement? J'ai cherché JavaFX 8 doc et je n'ai rien trouvé d'évidemment utile.
Les solutions utilisant JavaFX sont préférées, mais toutes les réponses sont les bienvenues.
0
2 answers
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.Clipboard;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final Clipboard systemClipboard = Clipboard.getSystemClipboard();
new com.sun.glass.ui.ClipboardAssistance(com.sun.glass.ui.Clipboard.SYSTEM) {
@Override
public void contentChanged() {
System.out.print("System clipboard content changed: ");
if ( systemClipboard.hasImage() ) {
System.out.println("image");
} else if ( systemClipboard.hasString() ) {
System.out.println("string");
} else if ( systemClipboard.hasFiles() ) {
System.out.println("files");
}
}
};
primaryStage.setScene(new Scene(new StackPane()));
primaryStage.show();
}
}
Test:
- Appuyez sur la touche Imprimer l'écran
- Ctrl + C pour la chaîne sélectionnée
- Ctrl+c pour les fichiers sélectionnés
4
Author: Александр Савостьянов, 2017-11-29 10:05:43
Non, il n'y a pas de meilleur moyen. Il n'y a aucun événement envoyé lorsque le contenu du presse-papiers change (surtout s'il provient de l'extérieur de l'application Java) et donc seule une approche d'interrogation est appropriée.
0
Author: AlBlue, 2014-08-02 20:47:56