【发布时间】:2014-09-25 18:05:54
【问题描述】:
正如这个问题的答案所述,可以设置一个时间轴来检查系统剪贴板是否有变化:
Set and use variables outside timeline in javafx 8
但是有更好的方法吗?例如,事件监听器?我搜索了 JavaFx 8 文档并没有发现任何明显有用的东西。
首选使用 JavaFx 的解决方案,但欢迎所有答案。
【问题讨论】:
标签: java javafx clipboard javafx-8
正如这个问题的答案所述,可以设置一个时间轴来检查系统剪贴板是否有变化:
Set and use variables outside timeline in javafx 8
但是有更好的方法吗?例如,事件监听器?我搜索了 JavaFx 8 文档并没有发现任何明显有用的东西。
首选使用 JavaFx 的解决方案,但欢迎所有答案。
【问题讨论】:
标签: java javafx clipboard javafx-8
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();
}
}
测试:
【讨论】:
不,没有更好的方法。当剪贴板内容发生变化时(尤其是来自 Java 应用程序的外部),不会发送任何事件,因此只有轮询方法是合适的。
【讨论】: