如何只显示 JComponent/SwingNode/Java FX 面板的一部分

How to only show a section of a JComponent/SwingNode/Java FX Pane

我正在构建一个 Java FX 音乐应用程序,我有一个 Java FX Pane,其中包含一个包含 JComponent 的 SwingNode,我希望能够隐藏顶部和底部这个组件,只显示中间部分。

如果我将 Pane 的大小调整为小于 Component,那么它只会显示 Component 的顶部,就像这样 Top section of Component, but I would like a way to move the component upwards so that the middle section is visible and the top and bottom are cropped Middle section of Component

有人知道这样做的方法吗? TIA

如果想简单的裁剪外围区域,将节点包裹成Pane,设置负数LayoutXY和合适的MaxSize。当外部区域与其他 Node 重叠时,可能需要裁剪。例如:

Pane viewPort = new Pane();
viewPort.getChildren().add(yourSwingNode);

// Top 200px and bottom 200px of yourSwingNode will be trimed.
yourSwingNode.setLayoutY(-200.0);
yourSwingNode.layoutBoundsProperty().addListener((o, ov, nv) -> {
    viewPort.setMaxHeight(nv.getHeight() - 400.0);
});

// Set a clip for the layout bounds of Pane if you need
Rectangle clip = new Rectangle();
viewPort.layoutBoundsProperty().addListener((o, ov, nv) -> {
    clip.setWidth(nv.getWidth());
    clip.setHeight(nv.getHeight());
});
viewPort.setClip(clip);