繁体   English   中英

将 JPanel 添加到 Javafx

[英]Adding a JPanel to Javafx

我目前正在研究数字签名的签名解决方案。 我收到了带有 API 的签名平板电脑。 API 已关闭,我无法更改其中的任何内容。 现在的问题是我无法处理设备的响应。 在进行签名或绘图时,我会收到 JPanel 形式的答案。 由于我正在使用 JavaFX 场景进行编程,因此我现在不知道如何将 JPanel 包含到我的场景中。 我只学会了使用 JavaFx,所以我对 JPanel 之类的东西不太了解。

所以.. 我想知道是否有办法将 Jpanel 添加到 FlowPane 中。 我发现关于这个主题的所有内容都是关于其他方式的线程。当人们试图将 javafx-Components 添加到 Jpanel 时。 但不是这样......所以也许很明显如何做到这一点,但我不明白。

JPanel x = pad.startSiganture();
FlowPane flow = new FlowPane();
flow.getChildren.addAll(x);

基本上这就是我梦寐以求的,当然是行不通的。 所以.. 感谢您的任何回应,我希望它可能。

YXCD

是的,这是可能的:将您的 JPanel 添加到 SwingNode,然后将其放入您的 FlowPane:

SwingNode node = new SwingNode()
node.setContent(pad.startSiganture());
FlowPane flow = new FlowPane();
flow.getChildren.addAll(node);

是的,这可以通过 SwingNode 实现,这是一个 javafx 节点,可以包含 swing 内容,请参阅文档中的内容:

This class is used to embed a Swing content into a JavaFX application.The content to be displayed is specified with the setContent(javax.swing.JComponent) methodthat accepts an instance of Swing JComponent. JComponent 实例中包含的组件层次结构不应包含任何重量级组件,否则 SwingNode 可能无法绘制它。 内容会自动重新绘制。 所有输入和焦点事件都被透明地转发到 JComponent 实例给开发人员。

这是一个演示如何使用 SwingNode 的典型模式:

public class SwingFx extends Application {

     @Override
     public void start(Stage stage) {
         final SwingNode swingNode = new SwingNode();
         createAndSetSwingContent(swingNode);

         StackPane pane = new StackPane();
         pane.getChildren().add(swingNode);

         stage.setScene(new Scene(pane, 100, 50));
         stage.show();
     }

     private void createAndSetSwingContent(final SwingNode swingNode) {
         SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
                 swingNode.setContent(new JButton("Click me!"));
             }
         });
     }

     public static void main(String[] args) {
         launch(args);
     }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM