向Javafx添加JPanel

问题描述 投票:0回答:2

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

所以。我想知道是否有一种方法可以将Jpanel添加到FlowPane。我发现的所有主题都是相反的主题。当人们试图向Jpanel中添加javafx-Components时。但是不是这样。所以也许做起来很明显但是我不明白。

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

基本上这就是我梦,以求的,当然那是行不通的。所以..感谢您的任何答复,我希望有可能。

YXCD

java javafx jpanel flowpane
2个回答
0
投票

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

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

0
投票

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

此类用于将Swing内容嵌入到JavaFX应用程序中。要显示的内容是通过setContent(javax.swing.JComponent)方法指定的,该方法接受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);
     }
 }
© www.soinside.com 2019 - 2024. All rights reserved.