簡體   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