最近很多小伙伴都在问复制并粘贴到嵌入Javafx应用程序的codemirror.js中和java复制到粘帖板这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展iOS8自定义键盘-复制
最近很多小伙伴都在问复制并粘贴到嵌入Javafx应用程序的codemirror.js中和java复制到粘帖板这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展iOS8自定义键盘-复制并粘贴到UIPasteboard、JavaFx 2.x-Swing:不在FX应用程序线程上、JavaFX 小程序可以获取到百度框,并粘贴数据么、javafx-2 – 如何在controller-class中的javafx应用程序中交换屏幕?等相关知识,下面开始了哦!
本文目录一览:- 复制并粘贴到嵌入Javafx应用程序的codemirror.js中(java复制到粘帖板)
- iOS8自定义键盘-复制并粘贴到UIPasteboard
- JavaFx 2.x-Swing:不在FX应用程序线程上
- JavaFX 小程序可以获取到百度框,并粘贴数据么
- javafx-2 – 如何在controller-class中的javafx应用程序中交换屏幕?
复制并粘贴到嵌入Javafx应用程序的codemirror.js中(java复制到粘帖板)
我正在使用codemirror.js库在Java FX中创建简单的编辑器。我使用以下html /
js代码,使用javafx.scene.web.WebView组件在Javafx中嵌入了Codemirror编辑器:
<body><form> <textarea id="code" name="code"> </textarea></form><script> var editor = CodeMirror.fromTextArea(document.getElementById("code"), { lineNumbers: true});</script></body>
Codemirror编辑器本身支持撤消,重做,剪切,复制和粘贴。
我的应用程序中也有javafx主菜单,我想向其中添加复制或粘贴之类的操作。我想以某种方式与我的Codemirror编辑器“绑定”此菜单动作,因此,如果用户单击例如从主菜单粘贴,剪贴板中的内容将添加到Codemirror编辑器。
我为撤消和重做操作解决了这个问题:codemirror有两个js函数undo()和redo(),我可以通过javafx.scene.web.WebView.executeScript方法从Java级别调用它们。
我的问题是如何处理剪切,复制和粘贴操作?如何使用Codemirror编辑器从主菜单绑定此操作?我在codemirror.js中找不到可以处理此操作的任何js函数。
任何帮助表示赞赏,并在此先感谢。
答案1
小编典典我找到了解决方案:Codmirror在API中没有剪切,复制和粘贴等功能,但是它允许获取和替换选定的文本,因此我可以自己编写这些操作。
public void cut() { String selectedText = (String) webview.getEngine().executeScript( "editor.getSelection();"); webview.getEngine().executeScript("editor.replaceSelection(\"\");"); final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString(selectedText); clipboard.setContent(content);}public void copy() { String selectedText = (String) webview.getEngine().executeScript( "editor.getSelection();"); final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString(selectedText); clipboard.setContent(content);}public void paste() { final Clipboard clipboard = Clipboard.getSystemClipboard(); String content = (String) clipboard.getContent(DataFormat.PLAIN_TEXT); webview.getEngine().executeScript(String.format("editor.replaceSelection(\"%s\");", content));}
iOS8自定义键盘-复制并粘贴到UIPasteboard
是否可以使用键盘扩展名将文本/图像复制到UIPasteboard?类似于popkey.co对动画图像所做的操作。
我测试了以下代码,但似乎无法正常工作。
func copyImage() { UIPasteboard.generalPasteboard().string = "copy test"}
它总是显示此错误消息:
UIPasteboard-无法启动粘贴纸板。确保已将其安装在UIKit.framework / Support中
您是否知道通过键盘扩展名使用复制粘贴的其他方法?
答案1
小编典典如果我在“设置”->“常规”->“键盘”应用中为自定义键盘“完全访问”功能,就可以做到这一点。您需要在Info.plist文件中包含“
RequestsOpenAccess” = YES。并且您必须在“设置”应用中切换“完全访问权限”。
似乎苹果公司限制了对通用UIPasteboard的访问。
JavaFx 2.x-Swing:不在FX应用程序线程上
我试图通过使用JInternalFrame附加JFXPanel来使用JavaFx 2.x和Swing应用程序
我的代码如下
public class InternalFrameWithJavafx extends javax.swing.JFrame {
/**
* Creates new form InternalFrameWithJavafx
*/
public InternalFrameWithJavafx() {
initComponents();
final JInternalFrame frame = new JInternalFrame();
frame.setTitle("test InternalFrame");
frame.setVisible(true);
frame.setResizable(true);
frame.setIconifiable(true);
frame.setMaximizable(true);
frame.setIconifiable(true);
frame.setClosable(true);
frame.setSize(800,600);
frame.setLocation(0,0);
frame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFXPanel javafxPanel = new JFXPanel();
BorderPane pane = new BorderPane();
javafxPanel.setScene( new Scene(pane) {
Text text = new Text("Hello World");
});
frame.getContentPane().add(javafxPanel,BorderLayout.CENTER);
}
});
this.add(frame);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,400,Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,300,Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (UnsupportedLookAndFeelException e) {
//handle exception
} catch (ClassNotFoundException e) {
//handle exception
} catch (InstantiationException e) {
//handle exception
} catch (IllegalAccessException e) {
//handle exception
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new InternalFrameWithJavafx().setVisible(true);
}
});
}
}
我有这个例外
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
at javafx.scene.Scene.<init>(Unknown Source)
at javafx.scene.Scene.<init>(Unknown Source)
at javafxapplication2.InternalFrameWithJavafx$1$1.<init>(InternalFrameWithJavafx.java:47)
at javafxapplication2.InternalFrameWithJavafx$1.run(InternalFrameWithJavafx.java:47)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
就我的目的而言,我必须使用JInternalFrame:如何解决此问题?
JavaFX 小程序可以获取到百度框,并粘贴数据么
用 javaFX 写一个窗口小程序,可以通过某个快捷键复制数据到第三方的文本框里么。例如,按 F1 复制某个用户名到百度输入框
javafx-2 – 如何在controller-class中的javafx应用程序中交换屏幕?
在javafx中有3个基本文件;控制器类,fxml文件和应用程序类.现在我想在控制器中做出一个按钮点击(其工作得很好)并更改该点击屏幕(通常使用stage.setScreen()),但我没有参考舞台(你可以在应用程序类中找到).
应用程序示例:
public class JavaFXApplication4 extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } /** * The main() method is ignored in correctly deployed JavaFX application. * main() serves only as fallback in case the application can not be * launched through deployment artifacts,e.g.,in IDEs with limited FX * support. NetBeans ignores main(). * * @param args the command line arguments */ public static void main(String[] args) { launch(args); } }
FXML-样品:
<?xml version="1.0" encoding="UTF-8"?> <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <AnchorPane id="AnchorPane" prefheight="200.0" prefWidth="320.0" xmlns:fx="http://javafx.com/fxml" fx:controller="javafxapplication4.SampleController"> <children> <Button id="button" fx:id="nextScreen" layoutX="126.0" layoutY="90.0" onAction="#handleButtonAction" text="Next Screen" /> <Label fx:id="label" layoutX="126.0" layoutY="120.0" minHeight="16.0" minWidth="69.0" /> </children> </AnchorPane>
控制器 – 示例:
public class SampleController implements Initializable { @FXML private Label label; @FXML private void handleButtonAction(ActionEvent event) { System.out.println("You clicked me!"); label.setText("Hello World!"); //Here I want to swap the screen! } @Override public void initialize(URL url,ResourceBundle rb) { // Todo } }
我会感谢任何一种帮助.
解决方法
@FXML private void handleButtonAction(ActionEvent event) { System.out.println("You clicked me!"); label.setText("Hello World!"); //Here I want to swap the screen! Stage stageTheEventSourceNodeBelongs = (Stage) ((Node)event.getSource()).getScene().getwindow(); // OR Stage stageTheLabelBelongs = (Stage) label.getScene().getwindow(); // these two of them return the same stage // Swap screen stage.setScene(new Scene(new Pane())); }
今天关于复制并粘贴到嵌入Javafx应用程序的codemirror.js中和java复制到粘帖板的介绍到此结束,谢谢您的阅读,有关iOS8自定义键盘-复制并粘贴到UIPasteboard、JavaFx 2.x-Swing:不在FX应用程序线程上、JavaFX 小程序可以获取到百度框,并粘贴数据么、javafx-2 – 如何在controller-class中的javafx应用程序中交换屏幕?等更多相关知识的信息可以在本站进行查询。
本文标签: