私のアプリケーションでは、JavaFX コントロールを備えた Swing パネルが必要です。そのために、JPanel を挿入する JLayeredPane と、塗りつぶされていないシーン (別名 ) を含む JFXPanel を使用しsetFill(null)
ます。ただし、JFXPanel の透明な領域を通過して Swing パネルに渡されるイベントはありません。
この問題の解決策はありますか?
ありがとう
ここに例があります:
public class TestJavaFX
{
private static JButton button;
private static JFXPanel javafxPanel;
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
initAndShowGUI();
}
});
}
public static void initAndShowGUI()
{
JFrame frame = new JFrame("Swing application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
javafxPanel = new JFXPanel();
button = new JButton("Swing - Push me");
JLayeredPane pane = new JLayeredPane();
pane.add(button, JLayeredPane.DEFAULT_LAYER);
pane.add(javafxPanel, JLayeredPane.PALETTE_LAYER);
pane.addComponentListener(new ComponentListener()
{
@Override
public void componentShown(ComponentEvent e)
{
}
@Override
public void componentResized(ComponentEvent e)
{
button.setBounds(20, 50, 150, 30);
javafxPanel.setBounds(0, 0, e.getComponent().getWidth(), e.getComponent().getHeight());
}
@Override
public void componentMoved(ComponentEvent e)
{
}
@Override
public void componentHidden(ComponentEvent e)
{
}
});
frame.getContentPane().add(pane, BorderLayout.CENTER);
Platform.runLater(new Runnable()
{
public void run()
{
createScene();
}
});
// Show frame.
frame.setSize(600, 400);
frame.setVisible(true);
}
private static void createScene()
{
Button btn = new Button();
btn.setText("JavaFX - Push me");
VBox pane = new VBox();
pane.getChildren().add(btn);
Scene scene = new Scene(pane);
scene.setFill(null);
javafxPanel.setScene(scene);
}
}