Browser 将文本从浏览器拖到JavaFXGUI中
我找不到任何与此完全相同的问题:JavaFX中有没有一种方法可以显示一个GUI(stage),它可以接受用户从浏览器拖放的文本 例如,用户导航到某个URL,然后复制页面的所有文本并将其拖动到显示的JavaFX阶段。然后可以在Java程序中使用文本。我宁愿不使用Selenium,这样我的应用程序就不会执行任何类似刮擦的活动 我正在寻找一个与Windows XP+和所有浏览器兼容的解决方案Browser 将文本从浏览器拖到JavaFXGUI中,browser,text,javafx,drag-and-drop,stage,Browser,Text,Javafx,Drag And Drop,Stage,我找不到任何与此完全相同的问题:JavaFX中有没有一种方法可以显示一个GUI(stage),它可以接受用户从浏览器拖放的文本 例如,用户导航到某个URL,然后复制页面的所有文本并将其拖动到显示的JavaFX阶段。然后可以在Java程序中使用文本。我宁愿不使用Selenium,这样我的应用程序就不会执行任何类似刮擦的活动 我正在寻找一个与Windows XP+和所有浏览器兼容的解决方案 任何关于起点、教程、帖子或限制的反馈都非常好。谢谢你你可以试试这样的东西: public class Main
任何关于起点、教程、帖子或限制的反馈都非常好。谢谢你你可以试试这样的东西:
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
TextField textField = new TextField();
textField.setPromptText("Drag text here");
textField.addEventHandler(
DragEvent.DRAG_OVER,
event -> {
if (event.getDragboard().hasString()) {
event.acceptTransferModes(TransferMode.COPY);
}
event.consume();
});
textField.addEventHandler(
DragEvent.DRAG_DROPPED,
event -> {
Dragboard dragboard = event.getDragboard();
if (event.getTransferMode() == TransferMode.COPY &&
dragboard.hasString()) {
textField.setText(dragboard.getString());
event.setDropCompleted(true);
}
event.consume();
});
StackPane stackPane = new StackPane(textField);
stackPane.setPadding(new Insets(5));
stage.setScene(new Scene(stackPane, 300, 150));
stage.setTitle("Drag and Drop");
stage.show();
}
public static void main(String[] args) {
MainApp.launch(args);
}
}
获取HTML内容
TextArea textArea = new TextArea();
textArea.setPromptText("Drag text here");
textArea.addEventHandler(
DragEvent.DRAG_OVER,
event -> {
if (event.getDragboard().hasHtml()) {
event.acceptTransferModes(TransferMode.COPY);
}
event.consume();
});
textArea.addEventHandler(
DragEvent.DRAG_DROPPED,
event -> {
Dragboard dragboard = event.getDragboard();
if (event.getTransferMode() == TransferMode.COPY &&
dragboard.hasHtml()) {
textArea.setText(dragboard.getHtml());
event.setDropCompleted(true);
}
event.consume();
});
JavaFX支持从本机源拖放。对不起,你说的本地来源是什么意思?我的JavaFX应用程序最终将成为用户PC上的可执行jar。这是否意味着,如果他们安装了Chrome、IE、Firefox等,它将被视为本机源,因此与jar文件兼容?我现在开始阅读,“本机源代码”是指来自Java虚拟机外部(即来自计算机上运行的其他应用程序)。本机web浏览器(或任何web浏览器)就是一个例子。@JimJim您的JavaFX应用程序可以从任何其他应用程序接收DnD,无论是用户的浏览器、Word、记事本还是其他应用程序。只要实施适当的下降目标,你就可以开始了。事实上,默认文本区域可能会接受DnD,而您无需做任何事情,就像它接受粘贴一样。@JimJim bummer,懒惰的JavaFX实现者。需要考虑的一点是,从UX的观点来看,大块文本的DND是非常繁琐和繁琐的操作,特别是在不同的、可能重叠的窗口之间。剪切和粘贴更简单,如果你想变得有趣,并且你的源代码是浏览器,你可以编写一个书签,通过本地HTTP调用将内容发送到你的应用程序。这看起来很有希望,谢谢你Warren。我一定会测试并报告的。沃伦,效果很好,谢谢!!是否可以轻松地修改此代码,以便如果我将网站的内容拖到字段中,它会提供HTML而不是文本?就像这样,谢谢!我要彻底研究这些。感激