如何只显示JComponent / SwingNode / Java FX窗格的一部分

时间:2017-05-18 15:24:30

标签: java javafx components jcomponent pane

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

如果我将Pane的大小调整为小于Component,那么它只显示Component的顶部,就像这个Top section of Component一样,但我想要一种向上移动组件的方法,以便中间部分是可见,顶部和底部被裁剪Middle section of Component

任何人都知道这样做的方法吗? TIA

1 个答案:

答案 0 :(得分:1)

如果您想简单地剪辑外部区域,请将节点包裹到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);