如何只显示 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);
我正在构建一个 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);