Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSwing:透明JFXPanel_Java_Swing_Javafx_Transparency - Fatal编程技术网

JavaSwing:透明JFXPanel

JavaSwing:透明JFXPanel,java,swing,javafx,transparency,Java,Swing,Javafx,Transparency,我想在AWT面板上使用一个透明的JFXPanel 在您提问之前,我真的需要在Swing应用程序中有一个透明的JFXPanel,因为最终目标是用可拖动的JavaFx窗口丰富现有的AWT应用程序 以下是我尝试过的: public class JavaFXTest { private static void initAndShowGUI() { // Java FX Panel JFXPanel fxPanel = new JFXPanel();

我想在AWT面板上使用一个透明的JFXPanel

在您提问之前,我真的需要在Swing应用程序中有一个透明的JFXPanel,因为最终目标是用可拖动的JavaFx窗口丰富现有的AWT应用程序

以下是我尝试过的:

public class JavaFXTest {

    private static void initAndShowGUI() {
        // Java FX Panel
        JFXPanel fxPanel = new JFXPanel();
        BorderPane root = new BorderPane();
        root.setStyle("-fx-background-color: transparent;");
        Text text = new Text();
        text.setX(40);
        text.setY(100);
        text.setFont(new Font(25));
        text.setText("Welcome JavaFX!");
        root.setCenter(text);
        Scene scene = new Scene(root);
        scene.setFill(javafx.scene.paint.Color.TRANSPARENT);
        fxPanel.setBounds(0, 0, 1280, 720);
        fxPanel.setScene(scene);
        fxPanel.setOpaque(false);

        // AWT Panel
        Button button = new Button("AWT Button");
        Label label = new Label("AWT Label");
        Panel awtPanel = new Panel();
        awtPanel.setBounds(0, 0, 300, 300);
        awtPanel.setLayout(new GridLayout(2,1));
        awtPanel.add(label);
        awtPanel.add(button);

        // Layered Pane
        JLayeredPane layers = new JLayeredPane();
        layers.add(fxPanel, 1);
        layers.add(awtPanel, 2);

        // Main Panel
        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());
        mainPanel.add(layers, BorderLayout.CENTER);

        // Main Window        
        JFrame frame = new JFrame("Swing and JavaFX");
        frame.getContentPane().add(mainPanel);
        frame.setSize(1280, 720);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                initAndShowGUI();
            }
        });
    }
}

我希望在仍然看到AWT元素的情况下,只保留JFXPanel中的文本,但JFXPanel背景仍然不透明。

Swing的第一条规则:不要将AWT和Swing混合使用。当您将JavaFX添加到此鸡尾酒中时,您会增加第三级头痛。请尝试使用fxPanel.setBackground(新颜色(0,0,0,0));